| Index: Source/core/platform/graphics/GraphicsContext.h
|
| diff --git a/Source/core/platform/graphics/GraphicsContext.h b/Source/core/platform/graphics/GraphicsContext.h
|
| deleted file mode 100644
|
| index ea4b991155bf5aa671d6f894f0edbf0a67c79f09..0000000000000000000000000000000000000000
|
| --- a/Source/core/platform/graphics/GraphicsContext.h
|
| +++ /dev/null
|
| @@ -1,491 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2003, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
|
| - * Copyright (C) 2008-2009 Torch Mobile, Inc.
|
| - * Copyright (C) 2013 Google Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
| - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
| - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
| - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
| - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
| - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
| - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#ifndef GraphicsContext_h
|
| -#define GraphicsContext_h
|
| -
|
| -#include "core/platform/graphics/Font.h"
|
| -#include "core/platform/graphics/GraphicsContextAnnotation.h"
|
| -#include "core/platform/graphics/GraphicsContextState.h"
|
| -#include "core/platform/graphics/ImageBuffer.h"
|
| -#include "core/platform/graphics/skia/OpaqueRegionSkia.h"
|
| -#include "core/platform/graphics/skia/SkiaUtils.h"
|
| -#include "platform/TraceEvent.h"
|
| -#include "platform/geometry/FloatRect.h"
|
| -#include "platform/graphics/DashArray.h"
|
| -#include "platform/graphics/DrawLooper.h"
|
| -#include "platform/graphics/ImageOrientation.h"
|
| -// TODO(robertphillips): replace this include with "class SkBaseDevice;"
|
| -#include "third_party/skia/include/core/SkDevice.h"
|
| -#include "wtf/FastAllocBase.h"
|
| -#include "wtf/Forward.h"
|
| -#include "wtf/Noncopyable.h"
|
| -#include "wtf/PassOwnPtr.h"
|
| -
|
| -class SkBitmap;
|
| -class SkPaint;
|
| -class SkPath;
|
| -class SkRRect;
|
| -struct SkRect;
|
| -
|
| -namespace WebCore {
|
| -
|
| -class DisplayList;
|
| -class ImageBuffer;
|
| -class KURL;
|
| -
|
| -class GraphicsContext {
|
| - WTF_MAKE_NONCOPYABLE(GraphicsContext); WTF_MAKE_FAST_ALLOCATED;
|
| -public:
|
| - enum AntiAliasingMode {
|
| - NotAntiAliased,
|
| - AntiAliased
|
| - };
|
| - enum AccessMode {
|
| - ReadOnly,
|
| - ReadWrite
|
| - };
|
| -
|
| - explicit GraphicsContext(SkCanvas*);
|
| - ~GraphicsContext();
|
| -
|
| - // Returns the canvas used for painting, NOT guaranteed to be non-null.
|
| - // Accessing the backing canvas this way flushes all queued save ops,
|
| - // so it should be avoided. Use the corresponding draw/matrix/clip methods instead.
|
| - SkCanvas* canvas()
|
| - {
|
| - // Flush any pending saves.
|
| - realizeSave(SkCanvas::kMatrixClip_SaveFlag);
|
| -
|
| - return m_canvas;
|
| - }
|
| - const SkCanvas* canvas() const { return m_canvas; }
|
| - bool paintingDisabled() const { return !m_canvas; }
|
| -
|
| - const SkBitmap* bitmap() const;
|
| - const SkBitmap& layerBitmap(AccessMode = ReadOnly) const;
|
| -
|
| - SkBaseDevice* createCompatibleDevice(const IntSize&, bool hasAlpha) const;
|
| -
|
| - // ---------- State management methods -----------------
|
| - void save();
|
| - void restore();
|
| -
|
| - void saveLayer(const SkRect* bounds, const SkPaint*, SkCanvas::SaveFlags = SkCanvas::kARGB_ClipLayer_SaveFlag);
|
| - void restoreLayer();
|
| -
|
| - float strokeThickness() const { return m_state->m_strokeData.thickness(); }
|
| - void setStrokeThickness(float thickness) { m_state->m_strokeData.setThickness(thickness); }
|
| -
|
| - StrokeStyle strokeStyle() const { return m_state->m_strokeData.style(); }
|
| - void setStrokeStyle(StrokeStyle style) { m_state->m_strokeData.setStyle(style); }
|
| -
|
| - Color strokeColor() const { return m_state->m_strokeData.color(); }
|
| - void setStrokeColor(const Color&);
|
| -
|
| - Pattern* strokePattern() const { return m_state->m_strokeData.pattern(); }
|
| - void setStrokePattern(PassRefPtr<Pattern>);
|
| -
|
| - Gradient* strokeGradient() const { return m_state->m_strokeData.gradient(); }
|
| - void setStrokeGradient(PassRefPtr<Gradient>);
|
| -
|
| - void setLineCap(LineCap cap) { m_state->m_strokeData.setLineCap(cap); }
|
| - void setLineDash(const DashArray& dashes, float dashOffset) { m_state->m_strokeData.setLineDash(dashes, dashOffset); }
|
| - void setLineJoin(LineJoin join) { m_state->m_strokeData.setLineJoin(join); }
|
| - void setMiterLimit(float limit) { m_state->m_strokeData.setMiterLimit(limit); }
|
| -
|
| - WindRule fillRule() const { return m_state->m_fillRule; }
|
| - void setFillRule(WindRule fillRule) { m_state->m_fillRule = fillRule; }
|
| -
|
| - Color fillColor() const { return m_state->m_fillColor; }
|
| - void setFillColor(const Color&);
|
| - SkColor effectiveFillColor() const { return m_state->applyAlpha(m_state->m_fillColor.rgb()); }
|
| -
|
| - void setFillPattern(PassRefPtr<Pattern>);
|
| - Pattern* fillPattern() const { return m_state->m_fillPattern.get(); }
|
| -
|
| - void setFillGradient(PassRefPtr<Gradient>);
|
| - Gradient* fillGradient() const { return m_state->m_fillGradient.get(); }
|
| -
|
| - SkDrawLooper* drawLooper() const { return m_state->m_looper.get(); }
|
| - SkColor effectiveStrokeColor() const { return m_state->applyAlpha(m_state->m_strokeData.color().rgb()); }
|
| -
|
| - int getNormalizedAlpha() const;
|
| -
|
| - bool getClipBounds(SkRect* bounds) const;
|
| - bool getTransformedClipBounds(FloatRect* bounds) const;
|
| - SkMatrix getTotalMatrix() const;
|
| - bool isPrintingDevice() const;
|
| -
|
| - void setShouldAntialias(bool antialias) { m_state->m_shouldAntialias = antialias; }
|
| - bool shouldAntialias() const { return m_state->m_shouldAntialias; }
|
| -
|
| - void setShouldClampToSourceRect(bool clampToSourceRect) { m_state->m_shouldClampToSourceRect = clampToSourceRect; }
|
| - bool shouldClampToSourceRect() const { return m_state->m_shouldClampToSourceRect; }
|
| -
|
| - void setShouldSmoothFonts(bool smoothFonts) { m_state->m_shouldSmoothFonts = smoothFonts; }
|
| - bool shouldSmoothFonts() const { return m_state->m_shouldSmoothFonts; }
|
| -
|
| - // Turn off LCD text for the paint if not supported on this context.
|
| - void adjustTextRenderMode(SkPaint*);
|
| - bool couldUseLCDRenderedText();
|
| -
|
| - TextDrawingModeFlags textDrawingMode() const { return m_state->m_textDrawingMode; }
|
| - void setTextDrawingMode(TextDrawingModeFlags mode) { m_state->m_textDrawingMode = mode; }
|
| -
|
| - void setAlpha(float alpha) { m_state->m_alpha = alpha; }
|
| -
|
| - void setImageInterpolationQuality(InterpolationQuality quality) { m_state->m_interpolationQuality = quality; }
|
| - InterpolationQuality imageInterpolationQuality() const { return m_state->m_interpolationQuality; }
|
| -
|
| - void setCompositeOperation(CompositeOperator, blink::WebBlendMode = blink::WebBlendModeNormal);
|
| - CompositeOperator compositeOperation() const { return m_state->m_compositeOperator; }
|
| - blink::WebBlendMode blendModeOperation() const { return m_state->m_blendMode; }
|
| -
|
| - // Change the way document markers are rendered.
|
| - // Any deviceScaleFactor higher than 1.5 is enough to justify setting this flag.
|
| - void setUseHighResMarkers(bool isHighRes) { m_useHighResMarker = isHighRes; }
|
| -
|
| - // If true we are (most likely) rendering to a web page and the
|
| - // canvas has been prepared with an opaque background. If false,
|
| - // the canvas may havbe transparency (as is the case when rendering
|
| - // to a canvas object).
|
| - void setCertainlyOpaque(bool isOpaque) { m_isCertainlyOpaque = isOpaque; }
|
| - bool isCertainlyOpaque() const { return m_isCertainlyOpaque; }
|
| -
|
| - // Returns if the context is a printing context instead of a display
|
| - // context. Bitmap shouldn't be resampled when printing to keep the best
|
| - // possible quality.
|
| - bool printing() const { return m_printing; }
|
| - void setPrinting(bool printing) { m_printing = printing; }
|
| -
|
| - bool isAccelerated() const { return m_accelerated; }
|
| - void setAccelerated(bool accelerated) { m_accelerated = accelerated; }
|
| -
|
| - // The opaque region is empty until tracking is turned on.
|
| - // It is never clerared by the context.
|
| - void setTrackOpaqueRegion(bool track) { m_trackOpaqueRegion = track; }
|
| - const OpaqueRegionSkia& opaqueRegion() const { return m_opaqueRegion; }
|
| -
|
| - // The text region is empty until tracking is turned on.
|
| - // It is never clerared by the context.
|
| - void setTrackTextRegion(bool track) { m_trackTextRegion = track; }
|
| - const SkRect& textRegion() const { return m_textRegion; }
|
| -
|
| - bool updatingControlTints() const { return m_updatingControlTints; }
|
| - void setUpdatingControlTints(bool updatingTints) { m_updatingControlTints = updatingTints; }
|
| -
|
| - AnnotationModeFlags annotationMode() const { return m_annotationMode; }
|
| - void setAnnotationMode(const AnnotationModeFlags mode) { m_annotationMode = mode; }
|
| -
|
| - SkColorFilter* colorFilter();
|
| - void setColorFilter(ColorFilter);
|
| - // ---------- End state management methods -----------------
|
| -
|
| - // Get the contents of the image buffer
|
| - bool readPixels(SkBitmap*, int, int, SkCanvas::Config8888 = SkCanvas::kNative_Premul_Config8888);
|
| -
|
| - // Sets up the paint for the current fill style.
|
| - void setupPaintForFilling(SkPaint*) const;
|
| -
|
| - // Sets up the paint for stroking. Returns a float representing the
|
| - // effective width of the pen. If a non-zero length is provided, the
|
| - // number of dashes/dots on a dashed/dotted line will be adjusted to
|
| - // start and end that length with a dash/dot.
|
| - float setupPaintForStroking(SkPaint*, int length = 0) const;
|
| -
|
| - // These draw methods will do both stroking and filling.
|
| - // FIXME: ...except drawRect(), which fills properly but always strokes
|
| - // using a 1-pixel stroke inset from the rect borders (of the correct
|
| - // stroke color).
|
| - void drawRect(const IntRect&);
|
| - void drawLine(const IntPoint&, const IntPoint&);
|
| - void drawEllipse(const IntRect&);
|
| - void drawConvexPolygon(size_t numPoints, const FloatPoint*, bool shouldAntialias = false);
|
| -
|
| - void fillPath(const Path&);
|
| - void strokePath(const Path&);
|
| -
|
| - void fillEllipse(const FloatRect&);
|
| - void strokeEllipse(const FloatRect&);
|
| -
|
| - void fillRect(const FloatRect&);
|
| - void fillRect(const FloatRect&, const Color&);
|
| - void fillRect(const FloatRect&, const Color&, CompositeOperator);
|
| - void fillRoundedRect(const IntRect&, const IntSize& topLeft, const IntSize& topRight, const IntSize& bottomLeft, const IntSize& bottomRight, const Color&);
|
| - void fillRoundedRect(const RoundedRect&, const Color&);
|
| -
|
| - void clearRect(const FloatRect&);
|
| -
|
| - void strokeRect(const FloatRect&, float lineWidth);
|
| -
|
| - void drawDisplayList(DisplayList*);
|
| -
|
| - void drawImage(Image*, const IntPoint&, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotRespectImageOrientation);
|
| - void drawImage(Image*, const IntRect&, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotRespectImageOrientation, bool useLowQualityScale = false);
|
| - void drawImage(Image*, const IntPoint& destPoint, const IntRect& srcRect, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotRespectImageOrientation);
|
| - void drawImage(Image*, const FloatRect& destRect);
|
| - void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator = CompositeSourceOver, RespectImageOrientationEnum = DoNotRespectImageOrientation, bool useLowQualityScale = false);
|
| - void drawImage(Image*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator, blink::WebBlendMode, RespectImageOrientationEnum = DoNotRespectImageOrientation, bool useLowQualityScale = false);
|
| -
|
| - void drawTiledImage(Image*, const IntRect& destRect, const IntPoint& srcPoint, const IntSize& tileSize,
|
| - CompositeOperator = CompositeSourceOver, bool useLowQualityScale = false, blink::WebBlendMode = blink::WebBlendModeNormal, const IntSize& repeatSpacing = IntSize());
|
| - void drawTiledImage(Image*, const IntRect& destRect, const IntRect& srcRect,
|
| - const FloatSize& tileScaleFactor, Image::TileRule hRule = Image::StretchTile, Image::TileRule vRule = Image::StretchTile,
|
| - CompositeOperator = CompositeSourceOver, bool useLowQualityScale = false);
|
| -
|
| - void drawImageBuffer(ImageBuffer*, const IntPoint&, CompositeOperator = CompositeSourceOver, blink::WebBlendMode = blink::WebBlendModeNormal);
|
| - void drawImageBuffer(ImageBuffer*, const IntRect&, CompositeOperator = CompositeSourceOver, blink::WebBlendMode = blink::WebBlendModeNormal, bool useLowQualityScale = false);
|
| - void drawImageBuffer(ImageBuffer*, const IntPoint& destPoint, const IntRect& srcRect, CompositeOperator = CompositeSourceOver, blink::WebBlendMode = blink::WebBlendModeNormal);
|
| - void drawImageBuffer(ImageBuffer*, const IntRect& destRect, const IntRect& srcRect, CompositeOperator = CompositeSourceOver, blink::WebBlendMode = blink::WebBlendModeNormal, bool useLowQualityScale = false);
|
| - void drawImageBuffer(ImageBuffer*, const FloatRect& destRect);
|
| - void drawImageBuffer(ImageBuffer*, const FloatRect& destRect, const FloatRect& srcRect, CompositeOperator = CompositeSourceOver, blink::WebBlendMode = blink::WebBlendModeNormal, bool useLowQualityScale = false);
|
| -
|
| - // These methods write to the canvas and modify the opaque region, if tracked.
|
| - // Also drawLine(const IntPoint& point1, const IntPoint& point2) and fillRoundedRect
|
| - void writePixels(const SkBitmap&, int x, int y, SkCanvas::Config8888 = SkCanvas::kNative_Premul_Config8888);
|
| - void drawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint* = 0);
|
| - void drawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint* = 0);
|
| - void drawOval(const SkRect&, const SkPaint&);
|
| - void drawPath(const SkPath&, const SkPaint&);
|
| - // After drawing directly to the context's canvas, use this function to notify the context so
|
| - // it can track the opaque region.
|
| - // FIXME: this is still needed only because ImageSkia::paintSkBitmap() may need to notify for a
|
| - // smaller rect than the one drawn to, due to its clipping logic.
|
| - void didDrawRect(const SkRect&, const SkPaint&, const SkBitmap* = 0);
|
| - void drawRect(const SkRect&, const SkPaint&);
|
| - void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkRect& textRect, const SkPaint&);
|
| - void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY, const SkRect& textRect, const SkPaint&);
|
| - void drawTextOnPath(const void* text, size_t byteLength, const SkPath&, const SkRect& textRect, const SkMatrix*, const SkPaint&);
|
| -
|
| - void clip(const IntRect& rect) { clip(FloatRect(rect)); }
|
| - void clip(const FloatRect& rect) { clipRect(rect); }
|
| - void clipRoundedRect(const RoundedRect&);
|
| - void clipOut(const IntRect& rect) { clipRect(rect, NotAntiAliased, SkRegion::kDifference_Op); }
|
| - void clipOutRoundedRect(const RoundedRect&);
|
| - void clipPath(const Path&, WindRule = RULE_EVENODD);
|
| - void clipConvexPolygon(size_t numPoints, const FloatPoint*, bool antialias = true);
|
| - bool clipRect(const SkRect&, AntiAliasingMode = NotAntiAliased, SkRegion::Op = SkRegion::kIntersect_Op);
|
| -
|
| - void drawText(const Font&, const TextRunPaintInfo&, const FloatPoint&);
|
| - void drawEmphasisMarks(const Font&, const TextRunPaintInfo&, const AtomicString& mark, const FloatPoint&);
|
| - void drawBidiText(const Font&, const TextRunPaintInfo&, const FloatPoint&, Font::CustomFontNotReadyAction = Font::DoNotPaintIfFontNotReady);
|
| - void drawHighlightForText(const Font&, const TextRun&, const FloatPoint&, int h, const Color& backgroundColor, int from = 0, int to = -1);
|
| -
|
| - void drawLineForText(const FloatPoint&, float width, bool printing);
|
| - enum DocumentMarkerLineStyle {
|
| - DocumentMarkerSpellingLineStyle,
|
| - DocumentMarkerGrammarLineStyle
|
| - };
|
| - void drawLineForDocumentMarker(const FloatPoint&, float width, DocumentMarkerLineStyle);
|
| -
|
| - void beginTransparencyLayer(float opacity, const FloatRect* = 0);
|
| - void beginLayer(float opacity, CompositeOperator, const FloatRect* = 0, ColorFilter = ColorFilterNone);
|
| - void endLayer();
|
| -
|
| - // Instead of being dispatched to the active canvas, draw commands following beginRecording()
|
| - // are stored in a display list that can be replayed at a later time.
|
| - void beginRecording(const FloatRect& bounds);
|
| - PassRefPtr<DisplayList> endRecording();
|
| -
|
| - bool hasShadow() const;
|
| - void setShadow(const FloatSize& offset, float blur, const Color&,
|
| - DrawLooper::ShadowTransformMode = DrawLooper::ShadowRespectsTransforms,
|
| - DrawLooper::ShadowAlphaMode = DrawLooper::ShadowRespectsAlpha);
|
| - void clearShadow() { clearDrawLooper(); }
|
| -
|
| - // It is assumed that this draw looper is used only for shadows
|
| - // (i.e. a draw looper is set if and only if there is a shadow).
|
| - void setDrawLooper(const DrawLooper&);
|
| - void clearDrawLooper();
|
| -
|
| - void drawFocusRing(const Vector<IntRect>&, int width, int offset, const Color&);
|
| - void drawFocusRing(const Path&, int width, int offset, const Color&);
|
| -
|
| - enum Edge {
|
| - NoEdge = 0,
|
| - TopEdge = 1 << 1,
|
| - RightEdge = 1 << 2,
|
| - BottomEdge = 1 << 3,
|
| - LeftEdge = 1 << 4
|
| - };
|
| - typedef unsigned Edges;
|
| - void drawInnerShadow(const RoundedRect&, const Color& shadowColor, const IntSize shadowOffset, int shadowBlur, int shadowSpread, Edges clippedEdges = NoEdge);
|
| -
|
| - // This clip function is used only by <canvas> code. It allows
|
| - // implementations to handle clipping on the canvas differently since
|
| - // the discipline is different.
|
| - void canvasClip(const Path&, WindRule = RULE_EVENODD);
|
| - void clipOut(const Path&);
|
| -
|
| - // ---------- Transformation methods -----------------
|
| - enum IncludeDeviceScale { DefinitelyIncludeDeviceScale, PossiblyIncludeDeviceScale };
|
| - AffineTransform getCTM(IncludeDeviceScale includeScale = PossiblyIncludeDeviceScale) const;
|
| - void concatCTM(const AffineTransform& affine) { concat(affineTransformToSkMatrix(affine)); }
|
| - void setCTM(const AffineTransform& affine) { setMatrix(affineTransformToSkMatrix(affine)); }
|
| - void setMatrix(const SkMatrix&);
|
| -
|
| - void scale(const FloatSize&);
|
| - void rotate(float angleInRadians);
|
| - void translate(const FloatSize& size) { translate(size.width(), size.height()); }
|
| - void translate(float x, float y);
|
| -
|
| - // This function applies the device scale factor to the context, making the context capable of
|
| - // acting as a base-level context for a HiDPI environment.
|
| - void applyDeviceScaleFactor(float deviceScaleFactor) { scale(FloatSize(deviceScaleFactor, deviceScaleFactor)); }
|
| - // ---------- End transformation methods -----------------
|
| -
|
| - // URL drawing
|
| - void setURLForRect(const KURL&, const IntRect&);
|
| - void setURLFragmentForRect(const String& name, const IntRect&);
|
| - void addURLTargetAtPoint(const String& name, const IntPoint&);
|
| - bool supportsURLFragments() { return printing(); }
|
| -
|
| - // Create an image buffer compatible with this context, with suitable resolution
|
| - // for drawing into the buffer and then into this context.
|
| - PassOwnPtr<ImageBuffer> createCompatibleBuffer(const IntSize&, bool hasAlpha = true) const;
|
| -
|
| - static void adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth, StrokeStyle);
|
| -
|
| - void beginAnnotation(const GraphicsContextAnnotation&);
|
| - void endAnnotation();
|
| -
|
| -private:
|
| - static void addCornerArc(SkPath*, const SkRect&, const IntSize&, int);
|
| - static void setPathFromConvexPoints(SkPath*, size_t, const FloatPoint*);
|
| - static void setRadii(SkVector*, IntSize, IntSize, IntSize, IntSize);
|
| -
|
| - static PassRefPtr<SkColorFilter> WebCoreColorFilterToSkiaColorFilter(ColorFilter);
|
| -
|
| -#if OS(MACOSX)
|
| - static inline int getFocusRingOutset(int offset) { return offset + 2; }
|
| -#else
|
| - static inline int getFocusRingOutset(int offset) { return 0; }
|
| - static const SkPMColor lineColors(int);
|
| - static const SkPMColor antiColors1(int);
|
| - static const SkPMColor antiColors2(int);
|
| - static void draw1xMarker(SkBitmap*, int);
|
| - static void draw2xMarker(SkBitmap*, int);
|
| -#endif
|
| -
|
| - // Return value % max, but account for value possibly being negative.
|
| - static int fastMod(int value, int max)
|
| - {
|
| - bool isNeg = false;
|
| - if (value < 0) {
|
| - value = -value;
|
| - isNeg = true;
|
| - }
|
| - if (value >= max)
|
| - value %= max;
|
| - if (isNeg)
|
| - value = -value;
|
| - return value;
|
| - }
|
| -
|
| - // Sets up the common flags on a paint for antialiasing, effects, etc.
|
| - // This is implicitly called by setupPaintFill and setupPaintStroke, but
|
| - // you may wish to call it directly sometimes if you don't want that other
|
| - // behavior.
|
| - void setupPaintCommon(SkPaint*) const;
|
| -
|
| - // Helpers for drawing a focus ring (drawFocusRing)
|
| - void drawOuterPath(const SkPath&, SkPaint&, int);
|
| - void drawInnerPath(const SkPath&, SkPaint&, int);
|
| -
|
| - // SkCanvas wrappers.
|
| - bool isDrawingToLayer() const { return m_canvas->isDrawingToLayer(); }
|
| -
|
| - bool clipPath(const SkPath&, AntiAliasingMode = NotAntiAliased, SkRegion::Op = SkRegion::kIntersect_Op);
|
| - bool clipRRect(const SkRRect&, AntiAliasingMode = NotAntiAliased, SkRegion::Op = SkRegion::kIntersect_Op);
|
| -
|
| - bool concat(const SkMatrix&);
|
| -
|
| - // common code between setupPaintFor[Filling,Stroking]
|
| - void setupShader(SkPaint*, Gradient*, Pattern*, SkColor) const;
|
| -
|
| - // Apply deferred saves
|
| - void realizeSave(SkCanvas::SaveFlags flags)
|
| - {
|
| - if (m_deferredSaveFlags & flags) {
|
| - m_canvas->save((SkCanvas::SaveFlags)m_deferredSaveFlags);
|
| - m_deferredSaveFlags = 0;
|
| - }
|
| - }
|
| -
|
| - void didDrawTextInRect(const SkRect& textRect);
|
| -
|
| - void fillRectWithRoundedHole(const IntRect&, const RoundedRect& roundedHoleRect, const Color&);
|
| -
|
| - bool isRecording() const;
|
| -
|
| - // null indicates painting is disabled. Never delete this object.
|
| - SkCanvas* m_canvas;
|
| -
|
| - // Pointer to the current drawing state. This is a cached value of m_stateStack.last().
|
| - GraphicsContextState* m_state;
|
| - // States stack. Enables local drawing state change with save()/restore() calls.
|
| - // Use OwnPtr to avoid copying the large state structure.
|
| - Vector<OwnPtr<GraphicsContextState> > m_stateStack;
|
| -
|
| - // Currently pending save flags.
|
| - // FIXME: While defined as a bitmask of SkCanvas::SaveFlags, this is mostly used as a bool.
|
| - // It will come in handy when adding granular save() support (clip vs. matrix vs. paint).
|
| - // crbug.com/233713
|
| - struct DeferredSaveState;
|
| - unsigned m_deferredSaveFlags;
|
| - Vector<DeferredSaveState> m_saveStateStack;
|
| -
|
| - AnnotationModeFlags m_annotationMode;
|
| -
|
| - struct RecordingState;
|
| - Vector<RecordingState> m_recordingStateStack;
|
| -
|
| -#if !ASSERT_DISABLED
|
| - unsigned m_annotationCount;
|
| - unsigned m_layerCount;
|
| -#endif
|
| - // Tracks the region painted opaque via the GraphicsContext.
|
| - OpaqueRegionSkia m_opaqueRegion;
|
| - bool m_trackOpaqueRegion : 1;
|
| -
|
| - // Tracks the region where text is painted via the GraphicsContext.
|
| - bool m_trackTextRegion : 1;
|
| - SkRect m_textRegion;
|
| -
|
| - // Are we on a high DPI display? If so, spelling and grammar markers are larger.
|
| - bool m_useHighResMarker : 1;
|
| - // FIXME: Make this go away: crbug.com/236892
|
| - bool m_updatingControlTints : 1;
|
| - bool m_accelerated : 1;
|
| - bool m_isCertainlyOpaque : 1;
|
| - bool m_printing : 1;
|
| -};
|
| -
|
| -} // namespace WebCore
|
| -
|
| -#endif // GraphicsContext_h
|
|
|