@@ -19,13 +19,15 @@ namespace pdflib
1919 nlohmann::json get ();
2020 bool init_from (nlohmann::json& data);
2121
22- double get_angle () { return angle; }
22+ int get_angle () { return angle; }
2323
2424 std::array<double , 4 > get_crop_bbox () { return crop_bbox; }
2525 std::array<double , 4 > get_media_bbox () { return media_bbox; }
2626
2727 void execute (nlohmann::json& json_resources,
2828 QPDFObjectHandle qpdf_resources);
29+
30+ std::pair<double , double > rotate (int angle);
2931
3032 private:
3133
@@ -103,6 +105,56 @@ namespace pdflib
103105 return result;
104106 }
105107
108+ std::pair<double , double > pdf_resource<PAGE_DIMENSION>::rotate(int my_angle)
109+ {
110+ angle -= my_angle;
111+
112+ utils::values::rotate_inplace (my_angle, media_bbox);
113+ LOG_S (INFO) << " media: "
114+ << media_bbox[0 ] << " , "
115+ << media_bbox[1 ] << " , "
116+ << media_bbox[2 ] << " , "
117+ << media_bbox[3 ];
118+
119+ utils::values::rotate_inplace (my_angle, crop_bbox);
120+
121+ LOG_S (INFO) << " crop: "
122+ << crop_bbox[0 ] << " , "
123+ << crop_bbox[1 ] << " , "
124+ << crop_bbox[2 ] << " , "
125+ << crop_bbox[3 ];
126+
127+ utils::values::rotate_inplace (my_angle, bleed_bbox);
128+ utils::values::rotate_inplace (my_angle, trim_bbox);
129+ utils::values::rotate_inplace (my_angle, art_bbox);
130+
131+ utils::values::rotate_inplace (my_angle, bbox);
132+
133+ std::pair<double , double > delta = {0.0 , std::abs (media_bbox[3 ])};
134+
135+ media_bbox[3 ] += 2 *delta.second ;
136+ crop_bbox[3 ] += 2 *delta.second ;
137+ bleed_bbox[3 ] += 2 *delta.second ;
138+ trim_bbox[3 ] += 2 *delta.second ;
139+ art_bbox[3 ] += 2 *delta.second ;
140+
141+ bbox[3 ] += 2 *delta.second ;
142+
143+ LOG_S (INFO) << " crop: "
144+ << crop_bbox[0 ] << " , "
145+ << crop_bbox[1 ] << " , "
146+ << crop_bbox[2 ] << " , "
147+ << crop_bbox[3 ];
148+
149+ LOG_S (INFO) << " crop: "
150+ << bbox[0 ] << " , "
151+ << bbox[1 ] << " , "
152+ << bbox[2 ] << " , "
153+ << bbox[3 ];
154+
155+ return delta;
156+ }
157+
106158 bool pdf_resource<PAGE_DIMENSION>::init_from(nlohmann::json& data)
107159 {
108160 // LOG_S(INFO) << "reading: " << data.dump(2);
0 commit comments