Index: src/core/SkDeviceProperties.h |
diff --git a/src/core/SkDeviceProperties.h b/src/core/SkDeviceProperties.h |
index 80e0177650baea7d114e9bc099dfc76e6db6e1f1..11ecd651570dcb4c9cfc5994b2be83a93a98f4eb 100644 |
--- a/src/core/SkDeviceProperties.h |
+++ b/src/core/SkDeviceProperties.h |
@@ -1,103 +1,26 @@ |
+/* |
+ * Copyright 2014 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
#ifndef SkDeviceProperties_DEFINED |
#define SkDeviceProperties_DEFINED |
-//TODO: get everyone to stop using SkFontLCDConfig::SetSubpixel* and remove this import. |
-#include "SkFontLCDConfig.h" |
+#include "SkSurfacePriv.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) : fPixelGeometry(SkSurfacePropsDefaultPixelGeometry()) {} |
+ SkDeviceProperties(SkPixelGeometry geo) : fPixelGeometry(geo) {} |
- static SkDeviceProperties MakeDefault() { |
- SkDeviceProperties ret = { Geometry::MakeDefault(), SK_GAMMA_EXPONENT }; |
- return ret; |
- } |
- |
- static SkDeviceProperties Make(Geometry geometry, SkScalar gamma) { |
- SkDeviceProperties ret = { geometry, gamma }; |
- return ret; |
- } |
- |
- /** Each pixel of an image will have some number of channels. |
- * Can the layout of those channels be exploited? */ |
- Geometry fGeometry; |
+ SkPixelGeometry fPixelGeometry; |
- /** Represents the color space of the image. This is a woefully inadequate beginning. */ |
- SkScalar fGamma; |
+ // read-only attribute -- until we actually store a value (future CL) |
+ float getGamma() const { return SK_GAMMA_EXPONENT; } |
}; |
#endif |