#include "config.h"
#include "Font.h"
#include <cairo-win32.h>
#include "FontData.h"
#include "FontFallbackList.h"
#include "GraphicsContext.h"
#include "IntRect.h"
namespace WebCore {
static void notImplemented() { puts("Not yet implemented"); _CrtDbgBreak(); }
void Font::drawGlyphs(GraphicsContext* graphicsContext, const FontData* font, const GlyphBuffer& glyphBuffer,
int from, int numGlyphs, const FloatPoint& point) const
{
cairo_t* context = graphicsContext->platformContext();
float red, green, blue, alpha;
Color penColor = graphicsContext->pen().color();
penColor.getRGBA(red, green, blue, alpha);
cairo_set_source_rgba(context, red, green, blue, alpha);
cairo_surface_t* surface = cairo_get_target(context);
HDC dc = cairo_win32_surface_get_dc(surface);
XFORM savedxform;
GetWorldTransform(dc, &savedxform);
cairo_set_font_face(context, font->m_font.fontFace());
cairo_set_font_size(context, font->m_font.size());
SaveDC(dc);
cairo_scaled_font_t* scaledFont = font->m_font.scaledFont();
cairo_win32_scaled_font_select_font(scaledFont, dc);
SetWorldTransform(dc, &savedxform);
GlyphBufferGlyph* glyphs = glyphBuffer.glyphs(from);
float offset = point.x();
for (unsigned i = 0; i < numGlyphs; i++) {
glyphs[i].x = offset;
glyphs[i].y = point.y();
offset += glyphBuffer.advanceAt(from + i);
}
cairo_show_glyphs(context, glyphs, numGlyphs);
cairo_win32_scaled_font_done_font(scaledFont);
RestoreDC(dc, -1);
}
FloatRect Font::selectionRectForComplexText(const TextRun& run, const TextStyle& style, const IntPoint& point, int h) const
{
notImplemented();
return FloatRect();
}
void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const TextStyle& style, const FloatPoint& point) const
{
notImplemented();
}
float Font::floatWidthForComplexText(const TextRun& run, const TextStyle& style) const
{
notImplemented();
return 0;
}
int Font::offsetForPositionForComplexText(const TextRun& run, const TextStyle& style, int x, bool includePartialGlyphs) const
{
notImplemented();
return 0;
}
}