[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:52:35 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 5e15ea5ea9cf9491a7ca352b1499156b9e44368b
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Nov 20 19:04:38 2001 +0000
More changes tweaking the text layout/drawing implementation.
Changed the size of the list item bullets.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@465 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/khtml/rendering/render_list.cpp b/WebCore/khtml/rendering/render_list.cpp
index 21d00fa..3429f88 100644
--- a/WebCore/khtml/rendering/render_list.cpp
+++ b/WebCore/khtml/rendering/render_list.cpp
@@ -246,7 +246,13 @@ void RenderListMarker::printObject(QPainter *p, int, int,
p->setFont(style()->font());
p->setPen(style()->color());
QFontMetrics fm = p->fontMetrics();
+#ifdef _KWQ_
+ // Why does khtml draw such large dots, squares, circle, etc for list items?
+ // These seem much bigger than competing browsers. I've reduced the size.
+ int offset = fm.ascent()/3;
+#else
int offset = fm.ascent()*2/3;
+#endif
#ifdef BOX_DEBUG
p->setPen( QColor("red") );
diff --git a/WebCore/kwq/KWQFontMetrics.mm b/WebCore/kwq/KWQFontMetrics.mm
index 15d8ba7..42242c9 100644
--- a/WebCore/kwq/KWQFontMetrics.mm
+++ b/WebCore/kwq/KWQFontMetrics.mm
@@ -79,6 +79,18 @@ const float LargeNumberForText = 1.0e7;
static NSMutableDictionary *metricsCache = nil;
@implementation KWQMetricsInfo
+
++ (void)drawString: (NSString *)string atPoint: (NSPoint)p withFont: (NSFont *)font color: (NSColor *)color
+{
+ KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
+ NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
+ if (layoutManager != nil){
+ unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+ [metricsCache setColor: color];
+ [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:p];
+ }
+}
+
+ (KWQMetricsInfo *)getMetricsForFont: (NSFont *)aFont
{
KWQMetricsInfo *info = (KWQMetricsInfo *)[metricsCache objectForKey: aFont];
diff --git a/WebCore/kwq/KWQMetrics.h b/WebCore/kwq/KWQMetrics.h
index 2bc3066..bba5e2c 100644
--- a/WebCore/kwq/KWQMetrics.h
+++ b/WebCore/kwq/KWQMetrics.h
@@ -33,6 +33,7 @@
NSMutableDictionary *fragmentCache;
}
++ (void)drawString: (NSString *)string atPoint: (NSPoint)p withFont: (NSFont *)font color: (NSColor *)color;
+ (KWQMetricsInfo *)getMetricsForFont: (NSFont *)aFont;
+ (void)setMetric: (KWQMetricsInfo *)info forFont: (NSFont *)aFont;
- initWithFont: (NSFont *)aFont;
diff --git a/WebCore/kwq/KWQPainter.mm b/WebCore/kwq/KWQPainter.mm
index a020c26..10a0acc 100644
--- a/WebCore/kwq/KWQPainter.mm
+++ b/WebCore/kwq/KWQPainter.mm
@@ -274,10 +274,11 @@ void QPainter::drawLine(int x1, int y1, int x2, int y2)
}
+// This method is only used to draw the little circles used in lists.
void QPainter::drawEllipse(int x, int y, int w, int h)
{
NSBezierPath *path;
-
+
path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect (x, y, w, h)];
_lockFocus();
@@ -483,12 +484,13 @@ void QPainter::drawText(int x, int y, const QString &qstring, int len)
y = y - (int)([font defaultLineHeightForFont] + [font descender]);
//[string drawAtPoint:NSMakePoint(x, y) withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, data->qpen.color().color, NSForegroundColorAttributeName, nil]];
- KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
- NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
- if (layoutManager != nil){
- unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
- [metricsCache setColor: data->qpen.color().color];
- [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:NSMakePoint(x, y)];
+ [KWQMetricsInfo drawString: string atPoint: NSMakePoint(x, y) withFont: font color: data->qpen.color().color];
+// KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
+// NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
+// if (layoutManager != nil){
+// unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+// [metricsCache setColor: data->qpen.color().color];
+// [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:NSMakePoint(x, y)];
/*
[font set];
@@ -506,7 +508,7 @@ void QPainter::drawText(int x, int y, const QString &qstring, int len)
[graphicsContext setShouldAntialias: flag];
*/
- }
+// }
_unlockFocus();
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_list.cpp b/WebCore/src/kdelibs/khtml/rendering/render_list.cpp
index 21d00fa..3429f88 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_list.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_list.cpp
@@ -246,7 +246,13 @@ void RenderListMarker::printObject(QPainter *p, int, int,
p->setFont(style()->font());
p->setPen(style()->color());
QFontMetrics fm = p->fontMetrics();
+#ifdef _KWQ_
+ // Why does khtml draw such large dots, squares, circle, etc for list items?
+ // These seem much bigger than competing browsers. I've reduced the size.
+ int offset = fm.ascent()/3;
+#else
int offset = fm.ascent()*2/3;
+#endif
#ifdef BOX_DEBUG
p->setPen( QColor("red") );
diff --git a/WebCore/src/kwq/KWQFontMetrics.mm b/WebCore/src/kwq/KWQFontMetrics.mm
index 15d8ba7..42242c9 100644
--- a/WebCore/src/kwq/KWQFontMetrics.mm
+++ b/WebCore/src/kwq/KWQFontMetrics.mm
@@ -79,6 +79,18 @@ const float LargeNumberForText = 1.0e7;
static NSMutableDictionary *metricsCache = nil;
@implementation KWQMetricsInfo
+
++ (void)drawString: (NSString *)string atPoint: (NSPoint)p withFont: (NSFont *)font color: (NSColor *)color
+{
+ KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
+ NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
+ if (layoutManager != nil){
+ unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+ [metricsCache setColor: color];
+ [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:p];
+ }
+}
+
+ (KWQMetricsInfo *)getMetricsForFont: (NSFont *)aFont
{
KWQMetricsInfo *info = (KWQMetricsInfo *)[metricsCache objectForKey: aFont];
diff --git a/WebCore/src/kwq/KWQMetrics.h b/WebCore/src/kwq/KWQMetrics.h
index 2bc3066..bba5e2c 100644
--- a/WebCore/src/kwq/KWQMetrics.h
+++ b/WebCore/src/kwq/KWQMetrics.h
@@ -33,6 +33,7 @@
NSMutableDictionary *fragmentCache;
}
++ (void)drawString: (NSString *)string atPoint: (NSPoint)p withFont: (NSFont *)font color: (NSColor *)color;
+ (KWQMetricsInfo *)getMetricsForFont: (NSFont *)aFont;
+ (void)setMetric: (KWQMetricsInfo *)info forFont: (NSFont *)aFont;
- initWithFont: (NSFont *)aFont;
diff --git a/WebCore/src/kwq/KWQPainter.mm b/WebCore/src/kwq/KWQPainter.mm
index a020c26..10a0acc 100644
--- a/WebCore/src/kwq/KWQPainter.mm
+++ b/WebCore/src/kwq/KWQPainter.mm
@@ -274,10 +274,11 @@ void QPainter::drawLine(int x1, int y1, int x2, int y2)
}
+// This method is only used to draw the little circles used in lists.
void QPainter::drawEllipse(int x, int y, int w, int h)
{
NSBezierPath *path;
-
+
path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect (x, y, w, h)];
_lockFocus();
@@ -483,12 +484,13 @@ void QPainter::drawText(int x, int y, const QString &qstring, int len)
y = y - (int)([font defaultLineHeightForFont] + [font descender]);
//[string drawAtPoint:NSMakePoint(x, y) withAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, data->qpen.color().color, NSForegroundColorAttributeName, nil]];
- KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
- NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
- if (layoutManager != nil){
- unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
- [metricsCache setColor: data->qpen.color().color];
- [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:NSMakePoint(x, y)];
+ [KWQMetricsInfo drawString: string atPoint: NSMakePoint(x, y) withFont: font color: data->qpen.color().color];
+// KWQMetricsInfo *metricsCache = [KWQMetricsInfo getMetricsForFont: font];
+// NSLayoutManager *layoutManager = [metricsCache layoutManagerForString: string];
+// if (layoutManager != nil){
+// unsigned numberOfGlyphs = [layoutManager numberOfGlyphs];
+// [metricsCache setColor: data->qpen.color().color];
+// [layoutManager drawGlyphsForGlyphRange:NSMakeRange (0, numberOfGlyphs) atPoint:NSMakePoint(x, y)];
/*
[font set];
@@ -506,7 +508,7 @@ void QPainter::drawText(int x, int y, const QString &qstring, int len)
[graphicsContext setShouldAntialias: flag];
*/
- }
+// }
_unlockFocus();
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list