15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc.  All rights reserved.
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met:
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    notice, this list of conditions and the following disclaimer in the
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *    documentation and/or other materials provided with the distribution.
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef GraphicsTypes_h
275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define GraphicsTypes_h
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/PlatformExport.h"
30a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "public/platform/WebBlendMode.h"
3193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "third_party/skia/include/core/SkPaint.h"
32e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "third_party/skia/include/core/SkPath.h"
3393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)#include "wtf/Forward.h"
345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
37e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum StrokeStyle {
38e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    NoStroke,
39e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    SolidStroke,
40e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    DottedStroke,
41e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    DashedStroke,
42e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    DoubleStroke,
43e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    WavyStroke,
44e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)};
45e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
46e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum InterpolationQuality {
475d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    InterpolationNone = SkPaint::kNone_FilterLevel,
485d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    InterpolationLow = SkPaint::kLow_FilterLevel,
495d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    InterpolationMedium = SkPaint::kMedium_FilterLevel,
505d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    InterpolationHigh = SkPaint::kHigh_FilterLevel,
5143e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)#if USE(LOW_QUALITY_IMAGE_INTERPOLATION)
5243e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    InterpolationDefault = InterpolationLow,
5343e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)#else
5443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)    InterpolationDefault = InterpolationHigh,
5543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles)#endif
56e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)};
57e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
58e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum CompositeOperator {
59e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeClear,
60e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeCopy,
61e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeSourceOver,
62e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeSourceIn,
63e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeSourceOut,
64e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeSourceAtop,
65e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeDestinationOver,
66e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeDestinationIn,
67e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeDestinationOut,
68e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeDestinationAtop,
69e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeXOR,
70e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositePlusDarker,
71e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositePlusLighter,
72e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    CompositeDifference
73e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)};
74e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
75e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum GradientSpreadMethod {
76e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    SpreadMethodPad,
77e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    SpreadMethodReflect,
78e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    SpreadMethodRepeat
79e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)};
80e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
8193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)enum LineCap {
8293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    ButtCap = SkPaint::kButt_Cap,
8393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    RoundCap = SkPaint::kRound_Cap,
8493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    SquareCap = SkPaint::kSquare_Cap
8593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)};
86e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
8793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)enum LineJoin {
8893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    MiterJoin = SkPaint::kMiter_Join,
8993ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    RoundJoin = SkPaint::kRound_Join,
9093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)    BevelJoin = SkPaint::kBevel_Join
9193ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles)};
92e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
93e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum HorizontalAlignment { AlignLeft, AlignRight, AlignHCenter };
94e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
95e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum TextBaseline { AlphabeticTextBaseline, TopTextBaseline, MiddleTextBaseline, BottomTextBaseline, IdeographicTextBaseline, HangingTextBaseline };
96e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
97e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum TextAlign { StartTextAlign, EndTextAlign, LeftTextAlign, CenterTextAlign, RightTextAlign };
98e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
99e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)enum TextDrawingMode {
100e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    TextModeFill      = 1 << 0,
101e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)    TextModeStroke    = 1 << 1,
102e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)};
103e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)typedef unsigned TextDrawingModeFlags;
104e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
1051e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)enum ColorFilter {
1061e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    ColorFilterNone,
1071e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    ColorFilterLuminanceToAlpha,
1081e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    ColorFilterSRGBToLinearRGB,
1091e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    ColorFilterLinearRGBToSRGB
1101e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)};
111c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)
112e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)enum WindRule {
113e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    RULE_NONZERO = SkPath::kWinding_FillType,
114e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    RULE_EVENODD = SkPath::kEvenOdd_FillType
115e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
116e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
117e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)PLATFORM_EXPORT String compositeOperatorName(CompositeOperator, WebBlendMode);
118e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)PLATFORM_EXPORT bool parseCompositeAndBlendOperator(const String&, CompositeOperator&, WebBlendMode&);
119e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
120f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT String lineCapName(LineCap);
121f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT bool parseLineCap(const String&, LineCap&);
122e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
123f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT String lineJoinName(LineJoin);
124f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT bool parseLineJoin(const String&, LineJoin&);
125e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
126f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT String textAlignName(TextAlign);
127f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT bool parseTextAlign(const String&, TextAlign&);
128e52495584422c5edb5b2944981473a2e208da323Torne (Richard Coles)
129f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT String textBaselineName(TextBaseline);
130f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)PLATFORM_EXPORT bool parseTextBaseline(const String&, TextBaseline&);
1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
132c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif
135