Home | History | Annotate | Download | only in cg
      1 /*
      2  * Copyright (C) 2006, 2007 Apple 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 #include <CoreGraphics/CGContext.h>
     27 
     28 namespace WebCore {
     29 
     30 // FIXME: This would be in GraphicsContextCG.h if that existed.
     31 CGColorSpaceRef deviceRGBColorSpaceRef();
     32 
     33 // FIXME: This would be in GraphicsContextCG.h if that existed.
     34 CGColorSpaceRef sRGBColorSpaceRef();
     35 
     36 class GraphicsContextPlatformPrivate {
     37 public:
     38     GraphicsContextPlatformPrivate(CGContextRef cgContext)
     39         : m_cgContext(cgContext)
     40 #if PLATFORM(WIN)
     41         , m_hdc(0)
     42         , m_transparencyCount(0)
     43         , m_shouldIncludeChildWindows(false)
     44 #endif
     45         , m_userToDeviceTransformKnownToBeIdentity(false)
     46     {
     47     }
     48 
     49     ~GraphicsContextPlatformPrivate()
     50     {
     51     }
     52 
     53 #if PLATFORM(MAC) || PLATFORM(CHROMIUM)
     54     // These methods do nothing on Mac.
     55     void save() {}
     56     void restore() {}
     57     void flush() {}
     58     void clip(const FloatRect&) {}
     59     void clip(const Path&) {}
     60     void scale(const FloatSize&) {}
     61     void rotate(float) {}
     62     void translate(float, float) {}
     63     void concatCTM(const AffineTransform&) {}
     64     void beginTransparencyLayer() {}
     65     void endTransparencyLayer() {}
     66 #endif
     67 
     68 #if PLATFORM(WIN)
     69     // On Windows, we need to update the HDC for form controls to draw in the right place.
     70     void save();
     71     void restore();
     72     void flush();
     73     void clip(const FloatRect&);
     74     void clip(const Path&);
     75     void scale(const FloatSize&);
     76     void rotate(float);
     77     void translate(float, float);
     78     void concatCTM(const AffineTransform&);
     79     void beginTransparencyLayer() { m_transparencyCount++; }
     80     void endTransparencyLayer() { m_transparencyCount--; }
     81 
     82     HDC m_hdc;
     83     unsigned m_transparencyCount;
     84     bool m_shouldIncludeChildWindows;
     85 #endif
     86 
     87     RetainPtr<CGContextRef> m_cgContext;
     88     bool m_userToDeviceTransformKnownToBeIdentity;
     89 };
     90 
     91 }
     92