author | George Wright <gwright@mozilla.com> |
Tue, 16 Oct 2012 17:16:45 -0400 | |
changeset 114065 | 8fdd86263b2fdcece4289c3331877fe3a280edef |
parent 114064 | b3e4fc8a5f81bab5ae908927e5f5b96bcb917109 |
child 114066 | ac29f2bce3421f49a70233795cf5fba1378e0147 |
push id | 23898 |
push user | emorley@mozilla.com |
push date | Fri, 23 Nov 2012 12:47:01 +0000 |
treeherder | mozilla-central@cfafa3e83938 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 751418 |
milestone | 20.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
|
gfx/2d/DrawTargetSkia.cpp | file | annotate | diff | comparison | revisions | |
gfx/2d/HelpersSkia.h | file | annotate | diff | comparison | revisions |
--- 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_ */