// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PRINTING_PRINTING_UTILS_H_ #define PRINTING_PRINTING_UTILS_H_ #include #include #include "base/component_export.h" #include "base/containers/span.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH) #include "base/strings/string_piece.h" #endif #if BUILDFLAG(IS_WIN) #include "ui/gfx/geometry/rect.h" #endif namespace gfx { class Size; } namespace printing { // Simplify title to resolve issue with some drivers. COMPONENT_EXPORT(PRINTING_BASE) std::u16string SimplifyDocumentTitle(const std::u16string& title); COMPONENT_EXPORT(PRINTING_BASE) std::u16string SimplifyDocumentTitleWithLength(const std::u16string& title, size_t length); COMPONENT_EXPORT(PRINTING_BASE) std::u16string FormatDocumentTitleWithOwner(const std::u16string& owner, const std::u16string& title); COMPONENT_EXPORT(PRINTING_BASE) std::u16string FormatDocumentTitleWithOwnerAndLength( const std::u16string& owner, const std::u16string& title, size_t length); #if defined(USE_CUPS) && !BUILDFLAG(IS_CHROMEOS_ASH) // Returns the paper size (microns) most common in the locale to the nearest // millimeter. Defaults to ISO A4 for an empty or invalid locale. COMPONENT_EXPORT(PRINTING_BASE) gfx::Size GetDefaultPaperSizeFromLocaleMicrons(base::StringPiece locale); // Returns true if both dimensions of the sizes have a delta less than or equal // to the epsilon value. COMPONENT_EXPORT(PRINTING_BASE) bool SizesEqualWithinEpsilon(const gfx::Size& lhs, const gfx::Size& rhs, int epsilon); #endif #if BUILDFLAG(IS_WIN) // Get page content rect adjusted based on // http://dev.w3.org/csswg/css3-page/#positioning-page-box COMPONENT_EXPORT(PRINTING_BASE) gfx::Rect GetCenteredPageContentRect(const gfx::Size& paper_size, const gfx::Size& page_size, const gfx::Rect& page_content_rect); #endif // Helper for tests and DCHECKs to validate that `maybe_pdf_data` suggests a PDF // document. This includes checking a minimal size and magic bytes. COMPONENT_EXPORT(PRINTING_BASE) bool LooksLikePdf(base::span maybe_pdf_data); } // namespace printing #endif // PRINTING_PRINTING_UTILS_H_