WebCore:
2008-09-02 David Hyatt <hyatt@apple.com>
Add support for canvas text drawing APIs.
Reviewed by olliej
Tests added as fast/canvas/canvas-text-*.html
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSCanvasRenderingContext2DCustom.cpp:
(WebCore::JSCanvasRenderingContext2D::fillText):
(WebCore::JSCanvasRenderingContext2D::strokeText):
* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::initForStyleResolve):
(WebCore::CSSStyleSelector::applyPropertyToStyle):
* css/CSSStyleSelector.h:
* html/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::State::State):
(WebCore::CanvasRenderingContext2D::font):
(WebCore::CanvasRenderingContext2D::setFont):
(WebCore::CanvasRenderingContext2D::textAlign):
(WebCore::CanvasRenderingContext2D::setTextAlign):
(WebCore::CanvasRenderingContext2D::textBaseline):
(WebCore::CanvasRenderingContext2D::setTextBaseline):
(WebCore::CanvasRenderingContext2D::fillText):
(WebCore::CanvasRenderingContext2D::strokeText):
(WebCore::CanvasRenderingContext2D::measureText):
(WebCore::CanvasRenderingContext2D::drawTextInternal):
(WebCore::CanvasRenderingContext2D::accessFont):
* html/CanvasRenderingContext2D.h:
* html/CanvasRenderingContext2D.idl:
* html/TextMetrics.h: Added.
(WebCore::TextMetrics::create):
(WebCore::TextMetrics::width):
(WebCore::TextMetrics::setWidth):
(WebCore::TextMetrics::TextMetrics):
* html/TextMetrics.idl: Added.
* platform/graphics/Font.cpp:
(WebCore::Font::lineGap):
* platform/graphics/Font.h:
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawBidiText):
* platform/graphics/GraphicsContext.h:
* platform/graphics/GraphicsTypes.cpp:
(WebCore::textAlignName):
(WebCore::parseTextAlign):
(WebCore::textBaselineName):
(WebCore::parseTextBaseline):
* platform/graphics/GraphicsTypes.h:
(WebCore::):
LayoutTests:
2008-09-02 David Hyatt <hyatt@apple.com>
Add support for the canvas text APIs.
Reviewed by olliej
* fast/canvas/canvas-text-alignment.html: Added.
* fast/canvas/canvas-text-baseline.html: Added.
* platform/mac/fast/canvas/canvas-text-alignment-expected.checksum: Added.
* platform/mac/fast/canvas/canvas-text-alignment-expected.png: Added.
* platform/mac/fast/canvas/canvas-text-alignment-expected.txt: Added.
* platform/mac/fast/canvas/canvas-text-baseline-expected.checksum: Added.
* platform/mac/fast/canvas/canvas-text-baseline-expected.png: Added.
* platform/mac/fast/canvas/canvas-text-baseline-expected.txt: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@36060 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ac6206a..82e0d92 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,18 @@
+2008-09-02 David Hyatt <hyatt@apple.com>
+
+ Add support for the canvas text APIs.
+
+ Reviewed by olliej
+
+ * fast/canvas/canvas-text-alignment.html: Added.
+ * fast/canvas/canvas-text-baseline.html: Added.
+ * platform/mac/fast/canvas/canvas-text-alignment-expected.checksum: Added.
+ * platform/mac/fast/canvas/canvas-text-alignment-expected.png: Added.
+ * platform/mac/fast/canvas/canvas-text-alignment-expected.txt: Added.
+ * platform/mac/fast/canvas/canvas-text-baseline-expected.checksum: Added.
+ * platform/mac/fast/canvas/canvas-text-baseline-expected.png: Added.
+ * platform/mac/fast/canvas/canvas-text-baseline-expected.txt: Added.
+
2008-09-03 Adele Peterson <adele@apple.com>
Reviewed by Darin Adler.
diff --git a/LayoutTests/fast/canvas/canvas-text-alignment.html b/LayoutTests/fast/canvas/canvas-text-alignment.html
new file mode 100644
index 0000000..efb1264
--- /dev/null
+++ b/LayoutTests/fast/canvas/canvas-text-alignment.html
@@ -0,0 +1,81 @@
+<html>
+<body>
+<canvas id="canvas" width=600 height=600 style="border:5px solid black">
+<script>
+var ctx = document.getElementById('canvas').getContext('2d');
+var lingrad = ctx.createLinearGradient(0,0,600,600);
+lingrad.addColorStop(0, '#00ABEB');
+lingrad.addColorStop(1.0, '#fff');
+
+var x = 10;
+var y = 30;
+
+ctx.font = "32px 'Times New Roman'";
+ctx.fillText("Normal Fill Text", x, y);
+
+y += 40;
+
+ctx.lineWidth = 2;
+ctx.strokeText("Normal Stroke Text", x, y);
+
+y += 40;
+
+ctx.fillStyle = lingrad;
+ctx.fillText("Gradient Fill Text", x, y);
+
+y += 40;
+
+ctx.strokeStyle = lingrad;
+ctx.strokeText("Gradient Stroke Text", x, y);
+
+ctx.textAlign = "end";
+
+x = 590;
+y += 40;
+
+ctx.fillStyle = 'black';
+ctx.fillText("Normal Fill Text", x, y);
+
+y += 40;
+
+ctx.strokeStyle = 'black';
+ctx.lineWidth = 2;
+ctx.strokeText("Normal Stroke Text", x, y);
+
+y += 40;
+
+ctx.fillStyle = lingrad;
+ctx.fillText("Gradient Fill Text", x, y);
+
+y += 40;
+
+ctx.strokeStyle = lingrad;
+ctx.strokeText("Gradient Stroke Text", x, y);
+
+y += 40;
+x = 300;
+
+ctx.textAlign = "center";
+
+ctx.fillStyle = 'black';
+ctx.fillText("Normal Fill Text", x, y);
+
+y += 40;
+
+ctx.strokeStyle = 'black';
+ctx.lineWidth = 2;
+ctx.strokeText("Normal Stroke Text", x, y);
+
+y += 40;
+
+ctx.fillStyle = lingrad;
+ctx.fillText("Gradient Fill Text", x, y);
+
+y += 40;
+
+ctx.strokeStyle = lingrad;
+ctx.strokeText("Gradient Stroke Text", x, y);
+
+y += 40;
+
+</script>
diff --git a/LayoutTests/fast/canvas/canvas-text-baseline.html b/LayoutTests/fast/canvas/canvas-text-baseline.html
new file mode 100644
index 0000000..c2471a9
--- /dev/null
+++ b/LayoutTests/fast/canvas/canvas-text-baseline.html
@@ -0,0 +1,42 @@
+<html>
+<body>
+<canvas id="canvas" width=600 height=300 style="border:5px solid black">
+<script>
+var ctx = document.getElementById('canvas').getContext('2d');
+
+var x = 10;
+var y = 150;
+
+ctx.lineWidth = 1;
+ctx.beginPath();
+ctx.moveTo(0, 150);
+ctx.lineTo(600, 150);
+ctx.closePath();
+ctx.stroke();
+
+ctx.font = "32px 'Times New Roman'";
+
+var text = "Baseline";
+var w = ctx.measureText(text).width;
+ctx.fillText(text, x, y);
+x += w + 10;
+
+text = "Top";
+ctx.textBaseline = "top";
+w = ctx.measureText(text).width;
+ctx.fillText(text, x, y);
+x += w + 10;
+
+text = "Bottom";
+ctx.textBaseline = "bottom";
+w = ctx.measureText(text).width;
+ctx.fillText(text, x, y);
+x += w + 10;
+
+text = "Middle";
+ctx.textBaseline = "middle";
+w = ctx.measureText(text).width;
+ctx.fillText(text, x, y);
+x += w + 10;
+
+</script>
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.checksum b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.checksum
new file mode 100644
index 0000000..3ef4d36
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.checksum
@@ -0,0 +1 @@
+edadf21d5093079a7b4488e0fe4ed7d1
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.png b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.png
new file mode 100644
index 0000000..357e847
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.txt b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.txt
new file mode 100644
index 0000000..e2b0b73
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-alignment-expected.txt
@@ -0,0 +1,6 @@
+layer at (0,0) size 785x626
+ RenderView at (0,0) size 785x600
+layer at (0,0) size 785x626
+ RenderBlock {HTML} at (0,0) size 785x626
+ RenderBody {BODY} at (8,8) size 769x610
+ RenderHTMLCanvas {CANVAS} at (0,0) size 610x610 [border: (5px solid #000000)]
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.checksum b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.checksum
new file mode 100644
index 0000000..adbae97
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.checksum
@@ -0,0 +1 @@
+684a99291e21e2a2013e810f5cc8e50e
\ No newline at end of file
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.png b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.png
new file mode 100644
index 0000000..04c8d0e
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.png
Binary files differ
diff --git a/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.txt b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.txt
new file mode 100644
index 0000000..6606240
--- /dev/null
+++ b/LayoutTests/platform/mac/fast/canvas/canvas-text-baseline-expected.txt
@@ -0,0 +1,6 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderBlock {HTML} at (0,0) size 800x600
+ RenderBody {BODY} at (8,8) size 784x584
+ RenderHTMLCanvas {CANVAS} at (0,0) size 610x310 [border: (5px solid #000000)]