Bug 751418 - Move common functions from DrawTargetSkia to HelpersSkia r=mattwoodrow
authorGeorge Wright <gwright@mozilla.com>
Tue, 16 Oct 2012 17:16:45 -0400
changeset 114065 8fdd86263b2fdcece4289c3331877fe3a280edef
parent 114064 b3e4fc8a5f81bab5ae908927e5f5b96bcb917109
child 114066 ac29f2bce3421f49a70233795cf5fba1378e0147
push id23898
push useremorley@mozilla.com
push dateFri, 23 Nov 2012 12:47:01 +0000
treeherdermozilla-central@cfafa3e83938 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmattwoodrow
bugs751418
milestone20.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 751418 - Move common functions from DrawTargetSkia to HelpersSkia r=mattwoodrow
gfx/2d/DrawTargetSkia.cpp
gfx/2d/HelpersSkia.h
--- a/gfx/2d/DrawTargetSkia.cpp
+++ b/gfx/2d/DrawTargetSkia.cpp
@@ -24,23 +24,16 @@
 # define USE_SOFT_CLIPPING false
 #else
 # define USE_SOFT_CLIPPING true
 #endif
 
 namespace mozilla {
 namespace gfx {
 
-SkColor ColorToSkColor(const Color &color, Float aAlpha)
-{
-  //XXX: do a better job converting to int
-  return SkColorSetARGB(U8CPU(color.a*aAlpha*255.0), U8CPU(color.r*255.0),
-                        U8CPU(color.g*255.0), U8CPU(color.b*255.0));
-}
-
 class GradientStopsSkia : public GradientStops
 {
 public:
   GradientStopsSkia(const std::vector<GradientStop>& aStops, uint32_t aNumStops, ExtendMode aExtendMode)
     : mCount(aNumStops)
     , mExtendMode(aExtendMode)
   {
     if (mCount == 0) {
@@ -76,78 +69,16 @@ public:
   BackendType GetBackendType() const { return BACKEND_SKIA; }
 
   std::vector<SkColor> mColors;
   std::vector<SkScalar> mPositions;
   int mCount;
   ExtendMode mExtendMode;
 };
 
-SkXfermode::Mode
-GfxOpToSkiaOp(CompositionOp op)
-{
-  switch (op)
-  {
-    case OP_OVER:
-      return SkXfermode::kSrcOver_Mode;
-    case OP_ADD:
-      return SkXfermode::kPlus_Mode;
-    case OP_ATOP:
-      return SkXfermode::kSrcATop_Mode;
-    case OP_OUT:
-      return SkXfermode::kSrcOut_Mode;
-    case OP_IN:
-      return SkXfermode::kSrcIn_Mode;
-    case OP_SOURCE:
-      return SkXfermode::kSrc_Mode;
-    case OP_DEST_IN:
-      return SkXfermode::kDstIn_Mode;
-    case OP_DEST_OUT:
-      return SkXfermode::kDstOut_Mode;
-    case OP_DEST_OVER:
-      return SkXfermode::kDstOver_Mode;
-    case OP_DEST_ATOP:
-      return SkXfermode::kDstATop_Mode;
-    case OP_XOR:
-      return SkXfermode::kXor_Mode;
-    case OP_COUNT:
-      return SkXfermode::kSrcOver_Mode;
-  }
-  return SkXfermode::kSrcOver_Mode;
-}
-
-
-SkRect
-RectToSkRect(const Rect& aRect)
-{
-  return SkRect::MakeXYWH(SkFloatToScalar(aRect.x), SkFloatToScalar(aRect.y), 
-                          SkFloatToScalar(aRect.width), SkFloatToScalar(aRect.height));
-}
-
-SkRect
-IntRectToSkRect(const IntRect& aRect)
-{
-  return SkRect::MakeXYWH(SkIntToScalar(aRect.x), SkIntToScalar(aRect.y), 
-                          SkIntToScalar(aRect.width), SkIntToScalar(aRect.height));
-}
-
-SkIRect
-RectToSkIRect(const Rect& aRect)
-{
-  return SkIRect::MakeXYWH(int32_t(aRect.x), int32_t(aRect.y),
-                           int32_t(aRect.width), int32_t(aRect.height));
-}
-
-SkIRect
-IntRectToSkIRect(const IntRect& aRect)
-{
-  return SkIRect::MakeXYWH(aRect.x, aRect.y, aRect.width, aRect.height);
-}
-
-
 DrawTargetSkia::DrawTargetSkia()
 {
 }
 
 DrawTargetSkia::~DrawTargetSkia()
 {
   if (mSnapshots.size()) {
     for (std::vector<SourceSurfaceSkia*>::iterator iter = mSnapshots.begin();
@@ -165,31 +96,16 @@ DrawTargetSkia::Snapshot()
   RefPtr<SourceSurfaceSkia> source = new SourceSurfaceSkia();
   if (!source->InitWithBitmap(mBitmap, mFormat, this)) {
     return nullptr;
   }
   AppendSnapshot(source);
   return source;
 }
 
-SkShader::TileMode
-ExtendModeToTileMode(ExtendMode aMode)
-{
-  switch (aMode)
-  {
-    case EXTEND_CLAMP:
-      return SkShader::kClamp_TileMode;
-    case EXTEND_REPEAT:
-      return SkShader::kRepeat_TileMode;
-    case EXTEND_REFLECT:
-      return SkShader::kMirror_TileMode;
-  }
-  return SkShader::kClamp_TileMode;
-}
-
 void SetPaintPattern(SkPaint& aPaint, const Pattern& aPattern, Float aAlpha = 1.0)
 {
   switch (aPattern.GetType()) {
     case PATTERN_COLOR: {
       Color color = static_cast<const ColorPattern&>(aPattern).mColor;
       aPaint.setColor(ColorToSkColor(color, aAlpha));
       break;
     }
--- a/gfx/2d/HelpersSkia.h
+++ b/gfx/2d/HelpersSkia.h
@@ -4,16 +4,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef MOZILLA_GFX_HELPERSSKIA_H_
 #define MOZILLA_GFX_HELPERSSKIA_H_
 
 #include "2D.h"
 #include "skia/SkCanvas.h"
 #include "skia/SkDashPathEffect.h"
+#include "skia/SkShader.h"
 #include "mozilla/Assertions.h"
 #include <vector>
 
 namespace mozilla {
 namespace gfx {
 
 static inline SkBitmap::Config
 GfxFormatToSkiaConfig(SurfaceFormat format)
@@ -122,12 +123,94 @@ ConvertBGRXToBGRA(unsigned char* aData, 
     for (int row = 0; row < aSize.height; ++row) {
         for (int column = 0; column < aSize.width; ++column) {
             pixel[column] |= 0xFF000000;
         }
         pixel += (aStride/4);
     }
 }
 
+static inline SkXfermode::Mode
+GfxOpToSkiaOp(CompositionOp op)
+{
+  switch (op)
+  {
+    case OP_OVER:
+      return SkXfermode::kSrcOver_Mode;
+    case OP_ADD:
+      return SkXfermode::kPlus_Mode;
+    case OP_ATOP:
+      return SkXfermode::kSrcATop_Mode;
+    case OP_OUT:
+      return SkXfermode::kSrcOut_Mode;
+    case OP_IN:
+      return SkXfermode::kSrcIn_Mode;
+    case OP_SOURCE:
+      return SkXfermode::kSrc_Mode;
+    case OP_DEST_IN:
+      return SkXfermode::kDstIn_Mode;
+    case OP_DEST_OUT:
+      return SkXfermode::kDstOut_Mode;
+    case OP_DEST_OVER:
+      return SkXfermode::kDstOver_Mode;
+    case OP_DEST_ATOP:
+      return SkXfermode::kDstATop_Mode;
+    case OP_XOR:
+      return SkXfermode::kXor_Mode;
+    case OP_COUNT:
+      return SkXfermode::kSrcOver_Mode;
+  }
+  return SkXfermode::kSrcOver_Mode;
+}
+
+static inline SkColor ColorToSkColor(const Color &color, Float aAlpha)
+{
+  //XXX: do a better job converting to int
+  return SkColorSetARGB(U8CPU(color.a*aAlpha*255.0), U8CPU(color.r*255.0),
+                        U8CPU(color.g*255.0), U8CPU(color.b*255.0));
+}
+
+static inline SkRect
+RectToSkRect(const Rect& aRect)
+{
+  return SkRect::MakeXYWH(SkFloatToScalar(aRect.x), SkFloatToScalar(aRect.y), 
+                          SkFloatToScalar(aRect.width), SkFloatToScalar(aRect.height));
+}
+
+static inline SkRect
+IntRectToSkRect(const IntRect& aRect)
+{
+  return SkRect::MakeXYWH(SkIntToScalar(aRect.x), SkIntToScalar(aRect.y), 
+                          SkIntToScalar(aRect.width), SkIntToScalar(aRect.height));
+}
+
+static inline SkIRect
+RectToSkIRect(const Rect& aRect)
+{
+  return SkIRect::MakeXYWH(int32_t(aRect.x), int32_t(aRect.y),
+                           int32_t(aRect.width), int32_t(aRect.height));
+}
+
+static inline SkIRect
+IntRectToSkIRect(const IntRect& aRect)
+{
+  return SkIRect::MakeXYWH(aRect.x, aRect.y, aRect.width, aRect.height);
+}
+
+static inline SkShader::TileMode
+ExtendModeToTileMode(ExtendMode aMode)
+{
+  switch (aMode)
+  {
+    case EXTEND_CLAMP:
+      return SkShader::kClamp_TileMode;
+    case EXTEND_REPEAT:
+      return SkShader::kRepeat_TileMode;
+    case EXTEND_REFLECT:
+      return SkShader::kMirror_TileMode;
+  }
+  return SkShader::kClamp_TileMode;
+}
+
 }
 }
 
 #endif /* MOZILLA_GFX_HELPERSSKIA_H_ */