+ rotate += getRotate();
+ if (rotate >= 360) {
+ rotate -= 360;
+ } else if (rotate < 0) {
+ rotate += 360;
+ }
+
+ mediaBox = getBox();
+ if (sliceW >= 0 && sliceH >= 0) {
+ k = 72.0 / dpi;
+ if (rotate == 90) {
+ if (out->upsideDown()) {
+ box.x1 = mediaBox->x1 + k * sliceY;
+ box.x2 = mediaBox->x1 + k * (sliceY + sliceH);
+ } else {
+ box.x1 = mediaBox->x2 - k * (sliceY + sliceH);
+ box.x2 = mediaBox->x2 - k * sliceY;
+ }
+ box.y1 = mediaBox->y1 + k * sliceX;
+ box.y2 = mediaBox->y1 + k * (sliceX + sliceW);
+ } else if (rotate == 180) {
+ box.x1 = mediaBox->x2 - k * (sliceX + sliceW);
+ box.x2 = mediaBox->x2 - k * sliceX;
+ if (out->upsideDown()) {
+ box.y1 = mediaBox->y1 + k * sliceY;
+ box.y2 = mediaBox->y1 + k * (sliceY + sliceH);
+ } else {
+ box.y1 = mediaBox->y2 - k * (sliceY + sliceH);
+ box.y2 = mediaBox->y2 - k * sliceY;
+ }
+ } else if (rotate == 270) {
+ if (out->upsideDown()) {
+ box.x1 = mediaBox->x2 - k * (sliceY + sliceH);
+ box.x2 = mediaBox->x2 - k * sliceY;
+ } else {
+ box.x1 = mediaBox->x1 + k * sliceY;
+ box.x2 = mediaBox->x1 + k * (sliceY + sliceH);
+ }
+ box.y1 = mediaBox->y2 - k * (sliceX + sliceW);
+ box.y2 = mediaBox->y2 - k * sliceX;
+ } else {
+ box.x1 = mediaBox->x1 + k * sliceX;
+ box.x2 = mediaBox->x1 + k * (sliceX + sliceW);
+ if (out->upsideDown()) {
+ box.y1 = mediaBox->y2 - k * (sliceY + sliceH);
+ box.y2 = mediaBox->y2 - k * sliceY;
+ } else {
+ box.y1 = mediaBox->y1 + k * sliceY;
+ box.y2 = mediaBox->y1 + k * (sliceY + sliceH);
+ }
+ }
+ } else {
+ box = *mediaBox;
+ }
+ cropBox = getCropBox();
+
+ if (globalParams->getPrintCommands()) {