Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Unified Diff: printing/pdf_transform.h

Issue 1421493002: Printing: Move some printing code out of pdf/ and into printing/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: simplify a function, add some unit tests, rebase Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: printing/pdf_transform.h
diff --git a/printing/pdf_transform.h b/printing/pdf_transform.h
new file mode 100644
index 0000000000000000000000000000000000000000..af4b84fc6b692b0822ea5343cb1000d028d9d55d
--- /dev/null
+++ b/printing/pdf_transform.h
@@ -0,0 +1,96 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef PRINTING_PDF_TRANSFORM_H_
+#define PRINTING_PDF_TRANSFORM_H_
+
+#include "printing/printing_export.h"
+
+namespace gfx {
+class Rect;
+}
+
+namespace printing {
+
+// A rect struct for use with FPDF bounding box functions.
+// With PDFs, origin is bottom-left.
+struct PRINTING_EXPORT ClipBox {
+ float left;
+ float right;
+ float top;
+ float bottom;
+};
+
+// Calculate the scale factor between |content_rect| and a page of size
+// |src_width| x |src_height|.
+//
+// |content_rect| specifies the printable area of the destination page, with
+// origin at left-bottom. Values are in points.
+// |src_width| specifies the source page width in points.
+// |src_height| specifies the source page height in points.
+// |rotated| True if source page is rotated 90 degree or 270 degree.
+PRINTING_EXPORT double CalculateScaleFactor(const gfx::Rect& content_rect,
+ double src_width,
+ double src_height,
+ bool rotated);
+
+// Make the default size to be letter size (8.5" X 11"). We are just following
+// the PDFium way of handling these corner cases. PDFium always consider
+// US-Letter as the default page size.
+PRINTING_EXPORT void SetDefaultClipBox(bool rotated, ClipBox* clip_box);
+
+// Compute source clip box boundaries based on the crop box / media box of
+// source page and scale factor.
+// Returns the computed source clip box values.
+//
+// |media_box| The PDF's media box.
+// |crop_box| The PDF's crop box.
+// |scale_factor| specifies the scale factor that should be applied to source
+// clip box boundaries.
+// |rotated| True if source page is rotated 90 degree or 270 degree.
+PRINTING_EXPORT ClipBox CalculateClipBoxBoundary(const ClipBox& media_box,
+ const ClipBox& crop_box,
+ double scale_factor,
+ bool rotated);
+
+// Calculate the clip box translation offset for a page that does need to be
+// scaled. All parameters are in points.
+//
+// |content_rect| specifies the printable area of the destination page, with
+// origin at left-bottom.
+// |source_clip_box| specifies the source clip box positions, relative to
+// origin at left-bottom.
+// |offset_x| and |offset_y| will contain the final translation offsets for the
+// source clip box, relative to origin at left-bottom.
+PRINTING_EXPORT void CalculateScaledClipBoxOffset(
+ const gfx::Rect& content_rect,
+ const ClipBox& source_clip_box,
+ double* offset_x,
+ double* offset_y);
+
+// Calculate the clip box offset for a page that does not need to be scaled.
+// All parameters are in points.
+//
+// |content_rect| specifies the printable area of the destination page, with
+// origin at left-bottom.
+// |rotation| specifies the source page rotation values which are N / 90
+// degrees.
+// |page_width| specifies the screen destination page width.
+// |page_height| specifies the screen destination page height.
+// |source_clip_box| specifies the source clip box positions, relative to origin
+// at left-bottom.
+// |offset_x| and |offset_y| will contain the final translation offsets for the
+// source clip box, relative to origin at left-bottom.
+PRINTING_EXPORT void CalculateNonScaledClipBoxOffset(
+ const gfx::Rect& content_rect,
+ int rotation,
+ int page_width,
+ int page_height,
+ const ClipBox& source_clip_box,
+ double* offset_x,
+ double* offset_y);
+
+} // namespace printing
+
+#endif // PRINTING_PDF_TRANSFORM_H_
« no previous file with comments | « printing/BUILD.gn ('k') | printing/pdf_transform.cc » ('j') | printing/pdf_transform.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698