SKIA

[Chromium] PlatformCanvas로부터 GraphicsContext 만들기

BLUE-NOTE 2011. 7. 8. 17:04

 
PlatformContextSkia* skiaContext(new PlatformContextSkia(platformCanvas.get()));
GraphicsContext* graphicsContext(new GraphicsContext(reinterpret_cast<PlatformGraphicsContext*>(skiaContext.get())));






  • [Chromium] chromium/src/third_party/WebKit/Source/WebCore/platform/graphics/chromium/PlatformCanvas.cpp
     
PlatformCanvas::Painter::Painter(PlatformCanvas* canvas, PlatformCanvas::Painter::TextOption option)
{
#if USE(SKIA)
    m_skiaContext = adoptPtr(new PlatformContextSkia(canvas->m_skiaCanvas.get()));

    m_skiaContext->setDrawingToImageBuffer(option == GrayscaleText);

    m_context = adoptPtr(new GraphicsContext(reinterpret_cast<PlatformGraphicsContext*>(m_skiaContext.get())));
#elif USE(CG)

    m_colorSpace = CGColorSpaceCreateDeviceRGB();
    size_t rowBytes = canvas->size().width() * 4;
    m_contextCG = CGBitmapContextCreate(canvas->m_pixelData.get(),
                                        canvas->size().width(), canvas->size().height(), 8, rowBytes,
                                        m_colorSpace.get(),
                                        kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
    CGContextTranslateCTM(m_contextCG.get(), 0, canvas->size().height());
    CGContextScaleCTM(m_contextCG.get(), 1, -1);
    m_context = adoptPtr(new GraphicsContext(m_contextCG.get()));
#endif
    context()->save();
}