diff options
author | gene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 17:22:21 +0000 |
---|---|---|
committer | gene@chromium.org <gene@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-09 17:22:21 +0000 |
commit | f64d7a352dd29bb7bc386fc1e829a764cdc9f64e (patch) | |
tree | 11cf115dcb989391b24729eb00f438ad895e50fb /printing | |
parent | 6c511d3b56ca0c74838e2650f326ec6a617a4350 (diff) | |
download | chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.zip chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.tar.gz chromium_src-f64d7a352dd29bb7bc386fc1e829a764cdc9f64e.tar.bz2 |
A better fix for scaling issue.
Instead of using TLS and static function, pass scaling in the skia dictionary.
BUG=125499
TEST=Make sure printing is working.
Review URL: https://chromiumcodereview.appspot.com/10387022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@136055 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r-- | printing/custom_scaling.cc | 37 | ||||
-rw-r--r-- | printing/custom_scaling.h | 33 | ||||
-rw-r--r-- | printing/metafile_skia_wrapper.cc | 22 | ||||
-rw-r--r-- | printing/metafile_skia_wrapper.h | 6 | ||||
-rw-r--r-- | printing/printing.gyp | 2 |
5 files changed, 26 insertions, 74 deletions
diff --git a/printing/custom_scaling.cc b/printing/custom_scaling.cc deleted file mode 100644 index dead79c..0000000 --- a/printing/custom_scaling.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2012 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. - -#include "printing/custom_scaling.h" - -#include "base/threading/thread_local.h" - -namespace printing { - -static base::ThreadLocalPointer<double> gPrintingPageScale; - -bool GetCustomPrintingPageScale(double* scale) { - double* ptr = gPrintingPageScale.Get(); - if (ptr != NULL) { - *scale = *ptr; - } - return ptr != NULL; -} - -void SetCustomPrintingPageScale(double scale) { - ClearCustomPrintingPageScale(); - double* ptr = new double; - *ptr = scale; - gPrintingPageScale.Set(ptr); -} - -void ClearCustomPrintingPageScale() { - double* ptr = gPrintingPageScale.Get(); - if (ptr != NULL) { - delete ptr; - } - gPrintingPageScale.Set(NULL); -} - -} // namespace printing - diff --git a/printing/custom_scaling.h b/printing/custom_scaling.h deleted file mode 100644 index 3f46d2e..0000000 --- a/printing/custom_scaling.h +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2012 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_CUSTOM_SCALING_H_ -#define PRINTING_CUSTOM_SCALING_H_ - -#include "printing/printing_export.h" - -namespace printing { - -// This set of function allows plugin to set custom printing scale in the -// thread local storage. It is a hack to pass scale through this, but -// alternative is to do major refactoring to pass this scale factor all the -// from plugin through webkit to the upper level. -// We should definitely revisit this approach in favor of better implementation -// later. In the mean time, this looks like a simplest way fixing printing -// issues now. - -// Gets custom printing scale from the TLS. Return false if it has not been -// set. -PRINTING_EXPORT bool GetCustomPrintingPageScale(double* scale); - -// Sets custom printing scale in TLS. -PRINTING_EXPORT void SetCustomPrintingPageScale(double scale); - -// Clears custom printing scale in TLS. -PRINTING_EXPORT void ClearCustomPrintingPageScale(); - -} // namespace printing - -#endif // PRINTING_CUSTOM_SCALING_H_ - diff --git a/printing/metafile_skia_wrapper.cc b/printing/metafile_skia_wrapper.cc index ee24a66..d4634ef 100644 --- a/printing/metafile_skia_wrapper.cc +++ b/printing/metafile_skia_wrapper.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -13,6 +13,7 @@ namespace printing { namespace { const char* kMetafileKey = "CrMetafile"; +const char* kCustomScaleKey = "CrCustomScale"; } // namespace @@ -38,6 +39,25 @@ Metafile* MetafileSkiaWrapper::GetMetafileFromCanvas(const SkCanvas& canvas) { return static_cast<MetafileSkiaWrapper*>(value)->metafile_; } +// static +void MetafileSkiaWrapper::SetCustomScaleOnCanvas(const SkCanvas& canvas, + double scale) { + SkMetaData& meta = skia::getMetaData(canvas); + meta.setScalar(kCustomScaleKey, SkFloatToScalar(scale)); +} + +// static +bool MetafileSkiaWrapper::GetCustomScaleOnCanvas(const SkCanvas& canvas, + double* scale) { + SkMetaData& meta = skia::getMetaData(canvas); + SkScalar value; + if (!meta.findScalar(kCustomScaleKey, &value)) + return false; + + *scale = SkScalarToFloat(value); + return true; +} + MetafileSkiaWrapper::MetafileSkiaWrapper(Metafile* metafile) : metafile_(metafile) { } diff --git a/printing/metafile_skia_wrapper.h b/printing/metafile_skia_wrapper.h index 9010449..42bbc5f 100644 --- a/printing/metafile_skia_wrapper.h +++ b/printing/metafile_skia_wrapper.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 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. @@ -24,6 +24,10 @@ class PRINTING_EXPORT MetafileSkiaWrapper : public SkRefCnt { static Metafile* GetMetafileFromCanvas(const SkCanvas& canvas); + // Methods to set and retrieve custom scale factor for metafile from canvas. + static void SetCustomScaleOnCanvas(const SkCanvas& canvas, double scale); + static bool GetCustomScaleOnCanvas(const SkCanvas& canvas, double* scale); + private: explicit MetafileSkiaWrapper(Metafile* metafile); diff --git a/printing/printing.gyp b/printing/printing.gyp index c9c9790..7d02e60 100644 --- a/printing/printing.gyp +++ b/printing/printing.gyp @@ -32,8 +32,6 @@ 'backend/print_backend_consts.cc', 'backend/print_backend_consts.h', 'backend/print_backend_dummy.cc', - 'custom_scaling.cc', - 'custom_scaling.h', 'emf_win.cc', 'emf_win.h', 'image.cc', |