Chromium Code Reviews| Index: src/core/SkDeviceProperties.h |
| diff --git a/src/core/SkDeviceProperties.h b/src/core/SkDeviceProperties.h |
| index 80e0177650baea7d114e9bc099dfc76e6db6e1f1..cd128ca7e9e3695f418f326c26b9bfd217e3c21a 100644 |
| --- a/src/core/SkDeviceProperties.h |
| +++ b/src/core/SkDeviceProperties.h |
| @@ -1,103 +1,22 @@ |
| #ifndef SkDeviceProperties_DEFINED |
| #define SkDeviceProperties_DEFINED |
| -//TODO: get everyone to stop using SkFontLCDConfig::SetSubpixel* and remove this import. |
| -#include "SkFontLCDConfig.h" |
| +#include "SkSurfaceProps.h" |
| struct SkDeviceProperties { |
| - struct Geometry { |
| - /** The orientation of the pixel specifies the interpretation of the |
| - * layout. If the orientation is horizontal, the layout is interpreted as |
| - * left to right. It the orientation is vertical, the layout is |
| - * interpreted top to bottom (rotated 90deg cw from horizontal). |
| - */ |
| - enum Orientation { |
| - kUnknown_Orientation = 0x0, |
| - kKnown_Orientation = 0x2, |
| - |
| - kHorizontal_Orientation = 0x2, //!< this is the default |
| - kVertical_Orientation = 0x3, |
| - |
| - kOrientationMask = 0x3, |
| - }; |
| - |
| - /** The layout of the pixel specifies its subpixel geometry. |
| - * |
| - * kUnknown_Layout means that the subpixel elements are not spatially |
| - * separated in any known or usable fashion. |
| - */ |
| - enum Layout { |
| - kUnknown_Layout = 0x0, |
| - kKnown_Layout = 0x8, |
| - |
| - kRGB_Layout = 0x8, //!< this is the default |
| - kBGR_Layout = 0xC, |
| - |
| - kLayoutMask = 0xC, |
| - }; |
| - |
| - Orientation getOrientation() { |
| - return static_cast<Orientation>(fGeometry & kOrientationMask); |
| - } |
| - Layout getLayout() { |
| - return static_cast<Layout>(fGeometry & kLayoutMask); |
| - } |
| - |
| - bool isOrientationKnown() { |
| - return SkToBool(fGeometry & kKnown_Orientation); |
| - } |
| - bool isLayoutKnown() { |
| - return SkToBool(fGeometry & kKnown_Layout); |
| - } |
| - |
| - private: |
| - //TODO: get everyone to stop using SkFontLCDConfig::SetSubpixel* and replace these calls with constants. |
| - static Orientation fromOldOrientation(SkFontLCDConfig::LCDOrientation orientation) { |
| - switch (orientation) { |
| - case SkFontLCDConfig::kHorizontal_LCDOrientation: return kHorizontal_Orientation; |
| - case SkFontLCDConfig::kVertical_LCDOrientation: return kVertical_Orientation; |
| - default: return kUnknown_Orientation; |
| - } |
| - } |
| - static Layout fromOldLayout(SkFontLCDConfig::LCDOrder order) { |
| - switch (order) { |
| - case SkFontLCDConfig::kRGB_LCDOrder: return kRGB_Layout; |
| - case SkFontLCDConfig::kBGR_LCDOrder: return kBGR_Layout; |
| - default: return kUnknown_Layout; |
| - } |
| - } |
| - public: |
| - static Geometry MakeDefault() { |
| - Orientation orientation = fromOldOrientation(SkFontLCDConfig::GetSubpixelOrientation()); //kHorizontal_Orientation |
| - Layout layout = fromOldLayout(SkFontLCDConfig::GetSubpixelOrder()); //kRGB_Layout |
| - Geometry ret = { SkToU8(orientation | layout) }; |
| - return ret; |
| - } |
| - |
| - static Geometry Make(Orientation orientation, Layout layout) { |
| - Geometry ret = { SkToU8(orientation | layout) }; |
| - return ret; |
| - } |
| - |
| - uint8_t fGeometry; |
| + enum InitType { |
| + kLegacyLCD_InitType |
| }; |
| + SkDeviceProperties(InitType); |
|
bungeman-skia
2014/09/19 18:29:51
If this is only ever supposed to be passed the one
reed1
2014/09/19 19:16:34
I want to not have a default constructor, so I can
|
| + SkDeviceProperties(SkPixelGeometry geo) : fPixelGeometry(geo) {} |
| - static SkDeviceProperties MakeDefault() { |
| - SkDeviceProperties ret = { Geometry::MakeDefault(), SK_GAMMA_EXPONENT }; |
| - return ret; |
| - } |
| + SkPixelGeometry fPixelGeometry; |
| - static SkDeviceProperties Make(Geometry geometry, SkScalar gamma) { |
| - SkDeviceProperties ret = { geometry, gamma }; |
| - return ret; |
| + bool useBGR() const { |
| + return kBGR_H_SkPixelGeometry == fPixelGeometry || kBGR_V_SkPixelGeometry == fPixelGeometry; |
| } |
| - /** Each pixel of an image will have some number of channels. |
| - * Can the layout of those channels be exploited? */ |
| - Geometry fGeometry; |
| - |
| - /** Represents the color space of the image. This is a woefully inadequate beginning. */ |
| - SkScalar fGamma; |
| + float getGamma() const { return SK_GAMMA_EXPONENT; } |
| }; |
| #endif |