1 /* 2 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26 #ifndef GraphicsTypes_h 27 #define GraphicsTypes_h 28 29 namespace WebCore { 30 31 class String; 32 33 // Note: These constants exactly match the NSCompositeOperator constants of 34 // AppKit on Mac OS X Tiger. If these ever change, we'll need to change the 35 // Mac OS X Tiger platform code to map one to the other. 36 enum CompositeOperator { 37 CompositeClear, 38 CompositeCopy, 39 CompositeSourceOver, 40 CompositeSourceIn, 41 CompositeSourceOut, 42 CompositeSourceAtop, 43 CompositeDestinationOver, 44 CompositeDestinationIn, 45 CompositeDestinationOut, 46 CompositeDestinationAtop, 47 CompositeXOR, 48 CompositePlusDarker, 49 CompositeHighlight, 50 CompositePlusLighter 51 }; 52 53 // FIXME: Currently these constants have to match the values used in the SVG 54 // DOM API. That's a mistake. We need to make cut that dependency. 55 enum GradientSpreadMethod { 56 SpreadMethodPad = 1, 57 SpreadMethodReflect = 2, 58 SpreadMethodRepeat = 3 59 }; 60 61 enum LineCap { ButtCap, RoundCap, SquareCap }; 62 63 enum LineJoin { MiterJoin, RoundJoin, BevelJoin }; 64 65 enum HorizontalAlignment { AlignLeft, AlignRight, AlignHCenter }; 66 67 enum TextBaseline { AlphabeticTextBaseline, TopTextBaseline, MiddleTextBaseline, BottomTextBaseline, IdeographicTextBaseline, HangingTextBaseline }; 68 69 enum TextAlign { StartTextAlign, EndTextAlign, LeftTextAlign, CenterTextAlign, RightTextAlign }; 70 71 String compositeOperatorName(CompositeOperator); 72 bool parseCompositeOperator(const String&, CompositeOperator&); 73 74 String lineCapName(LineCap); 75 bool parseLineCap(const String&, LineCap&); 76 77 String lineJoinName(LineJoin); 78 bool parseLineJoin(const String&, LineJoin&); 79 80 String textAlignName(TextAlign); 81 bool parseTextAlign(const String&, TextAlign&); 82 83 String textBaselineName(TextBaseline); 84 bool parseTextBaseline(const String&, TextBaseline&); 85 86 } // namespace WebCore 87 88 #endif 89