[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
hyatt
hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:08:18 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit bee19159de5d306434cb9d57cf2e1a9483655cb0
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Nov 25 22:38:23 2002 +0000
Add support to QFont for multiple families. NOw all that's left
is getting the multiple families out of the font and down into
WebKit.
* khtml/css/cssstyleselector.cpp:
* khtml/rendering/font.cpp:
(Font::update):
* khtml/rendering/font.h:
* khtml/xml/dom_docimpl.cpp:
(DocumentImpl::recalcStyle):
* kwq/KWQFont.h:
* kwq/KWQFont.mm:
(QFontFamily::QFontFamily):
(QFontFamily::operator=):
(QFontFamily::family):
(QFontFamily::setFamily):
(QFontFamily::operator==):
(QFont::QFont):
(QFont::family):
(QFont::setFamily):
(QFont::getNSFontWithFamily):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2866 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index ce2e0b2..c0293c7 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,27 @@
+2002-11-25 David Hyatt <hyatt at apple.com>
+
+ Add support to QFont for multiple families. NOw all that's left
+ is getting the multiple families out of the font and down into
+ WebKit.
+
+ * khtml/css/cssstyleselector.cpp:
+ * khtml/rendering/font.cpp:
+ (Font::update):
+ * khtml/rendering/font.h:
+ * khtml/xml/dom_docimpl.cpp:
+ (DocumentImpl::recalcStyle):
+ * kwq/KWQFont.h:
+ * kwq/KWQFont.mm:
+ (QFontFamily::QFontFamily):
+ (QFontFamily::operator=):
+ (QFontFamily::family):
+ (QFontFamily::setFamily):
+ (QFontFamily::operator==):
+ (QFont::QFont):
+ (QFont::family):
+ (QFont::setFamily):
+ (QFont::getNSFontWithFamily):
+
2002-11-25 Richard Williamson <rjw at apple.com>
Changes for back/forward. Currently disabled.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index ce2e0b2..c0293c7 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,27 @@
+2002-11-25 David Hyatt <hyatt at apple.com>
+
+ Add support to QFont for multiple families. NOw all that's left
+ is getting the multiple families out of the font and down into
+ WebKit.
+
+ * khtml/css/cssstyleselector.cpp:
+ * khtml/rendering/font.cpp:
+ (Font::update):
+ * khtml/rendering/font.h:
+ * khtml/xml/dom_docimpl.cpp:
+ (DocumentImpl::recalcStyle):
+ * kwq/KWQFont.h:
+ * kwq/KWQFont.mm:
+ (QFontFamily::QFontFamily):
+ (QFontFamily::operator=):
+ (QFontFamily::family):
+ (QFontFamily::setFamily):
+ (QFontFamily::operator==):
+ (QFont::QFont):
+ (QFont::family):
+ (QFont::setFamily):
+ (QFont::getNSFontWithFamily):
+
2002-11-25 Richard Williamson <rjw at apple.com>
Changes for back/forward. Currently disabled.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index ce2e0b2..c0293c7 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,27 @@
+2002-11-25 David Hyatt <hyatt at apple.com>
+
+ Add support to QFont for multiple families. NOw all that's left
+ is getting the multiple families out of the font and down into
+ WebKit.
+
+ * khtml/css/cssstyleselector.cpp:
+ * khtml/rendering/font.cpp:
+ (Font::update):
+ * khtml/rendering/font.h:
+ * khtml/xml/dom_docimpl.cpp:
+ (DocumentImpl::recalcStyle):
+ * kwq/KWQFont.h:
+ * kwq/KWQFont.mm:
+ (QFontFamily::QFontFamily):
+ (QFontFamily::operator=):
+ (QFontFamily::family):
+ (QFontFamily::setFamily):
+ (QFontFamily::operator==):
+ (QFont::QFont):
+ (QFont::family):
+ (QFont::setFamily):
+ (QFont::getNSFontWithFamily):
+
2002-11-25 Richard Williamson <rjw at apple.com>
Changes for back/forward. Currently disabled.
diff --git a/WebCore/khtml/css/cssstyleselector.cpp b/WebCore/khtml/css/cssstyleselector.cpp
index 4fda0f7..1f5fb0f 100644
--- a/WebCore/khtml/css/cssstyleselector.cpp
+++ b/WebCore/khtml/css/cssstyleselector.cpp
@@ -2517,55 +2517,68 @@ void CSSStyleSelector::applyRule( DOM::CSSProperty *prop )
// list of strings and ids
{
if(!value->isValueList()) return;
- FontDef fontDef = style->htmlFont().fontDef;
+ FontDef fontDef = style->htmlFont().fontDef;
CSSValueListImpl *list = static_cast<CSSValueListImpl *>(value);
int len = list->length();
- QString family;
+ QString family;
+ QFontFamily& firstFamily = fontDef.firstFamily();
+ QFontFamily* currFamily = 0;
+
for(int i = 0; i < len; i++) {
CSSValueImpl *item = list->item(i);
if(!item->isPrimitiveValue()) continue;
CSSPrimitiveValueImpl *val = static_cast<CSSPrimitiveValueImpl *>(item);
if(!val->primitiveType() == CSSPrimitiveValue::CSS_STRING) return;
QString face = static_cast<FontFamilyValueImpl *>(val)->fontName();
- if ( !face.isEmpty() ) {
- if(face == "serif") {
- face = settings->serifFontName();
- fontDef.setGenericFamily(FontDef::eSerif);
- }
- else if(face == "sans-serif") {
- face = settings->sansSerifFontName();
- fontDef.setGenericFamily(FontDef::eSansSerif);
- }
- else if( face == "cursive") {
- face = settings->cursiveFontName();
- fontDef.setGenericFamily(FontDef::eCursive);
- }
- else if( face == "fantasy") {
- face = settings->fantasyFontName();
- fontDef.setGenericFamily(FontDef::eFantasy);
- }
- else if( face == "monospace") {
- face = settings->fixedFontName();
- fontDef.setGenericFamily(FontDef::eMonospace);
- }
- else if( face == "konq_default") {
- // Treat this as though it's a generic family, since we will want
- // to reset to default sizes when we encounter this (and inherit
- // from an enclosing different family like monospace.
- face = settings->stdFontName();
- fontDef.setGenericFamily(FontDef::eStandard);
- }
-
- if ( !face.isEmpty() ) {
- fontDef.family = face;
- if (style->setFontDef( fontDef )) {
- fontDirty = true;
- }
- }
- return;
- }
+ if ( !face.isEmpty() ) {
+ if(face == "serif") {
+ face = settings->serifFontName();
+ fontDef.setGenericFamily(FontDef::eSerif);
+ }
+ else if(face == "sans-serif") {
+ face = settings->sansSerifFontName();
+ fontDef.setGenericFamily(FontDef::eSansSerif);
+ }
+ else if( face == "cursive") {
+ face = settings->cursiveFontName();
+ fontDef.setGenericFamily(FontDef::eCursive);
+ }
+ else if( face == "fantasy") {
+ face = settings->fantasyFontName();
+ fontDef.setGenericFamily(FontDef::eFantasy);
+ }
+ else if( face == "monospace") {
+ face = settings->fixedFontName();
+ fontDef.setGenericFamily(FontDef::eMonospace);
+ }
+ else if( face == "konq_default") {
+ // Treat this as though it's a generic family, since we will want
+ // to reset to default sizes when we encounter this (and inherit
+ // from an enclosing different family like monospace.
+ face = settings->stdFontName();
+ fontDef.setGenericFamily(FontDef::eStandard);
+ }
+
+ if ( !face.isEmpty() ) {
+ if (!currFamily) {
+ // Filling in the first family.
+ firstFamily.setFamily(face);
+ currFamily = &firstFamily;
+ }
+ else {
+ QFontFamily* newFamily = new QFontFamily;
+ newFamily->setFamily(face);
+ currFamily->appendFamily(newFamily);
+ currFamily = newFamily;
+ }
+
+ if (style->setFontDef( fontDef )) {
+ fontDirty = true;
+ }
+ }
+ }
}
- break;
+ break;
}
case CSS_PROP_QUOTES:
// list of strings or i
diff --git a/WebCore/khtml/rendering/font.cpp b/WebCore/khtml/rendering/font.cpp
index 55ea0ef..62f6e1f 100644
--- a/WebCore/khtml/rendering/font.cpp
+++ b/WebCore/khtml/rendering/font.cpp
@@ -176,7 +176,10 @@ int Font::width( QChar *chs, int slen, int pos ) const
void Font::update( QPaintDeviceMetrics* devMetrics ) const
{
- f.setFamily( fontDef.family.isEmpty() ? KHTMLFactory::defaultHTMLSettings()->stdFontName() : fontDef.family );
+ if (fontDef.family.family().isEmpty())
+ f.setFamily(KHTMLFactory::defaultHTMLSettings()->stdFontName());
+ else
+ f.setFirstFamily(fontDef.family);
f.setItalic( fontDef.italic );
f.setWeight( fontDef.weight );
diff --git a/WebCore/khtml/rendering/font.h b/WebCore/khtml/rendering/font.h
index 99df338..e4ac506 100644
--- a/WebCore/khtml/rendering/font.h
+++ b/WebCore/khtml/rendering/font.h
@@ -43,6 +43,7 @@ public:
FontDef()
: size( 0 ), italic( false ), smallCaps( false ), weight( 50 ),
genericFamily(0), hasNbsp( true ) {}
+
bool operator == ( const FontDef &other ) const {
return ( family == other.family &&
size == other.size &&
@@ -55,7 +56,9 @@ public:
void setGenericFamily(unsigned int aGenericFamily) { genericFamily = aGenericFamily; }
- QString family;
+ QFontFamily& firstFamily() { return family; }
+
+ QFontFamily family;
short int size;
bool italic : 1;
bool smallCaps : 1;
diff --git a/WebCore/khtml/xml/dom_docimpl.cpp b/WebCore/khtml/xml/dom_docimpl.cpp
index 7a2afc8..3da2eb2 100644
--- a/WebCore/khtml/xml/dom_docimpl.cpp
+++ b/WebCore/khtml/xml/dom_docimpl.cpp
@@ -892,17 +892,18 @@ void DocumentImpl::recalcStyle( StyleChange change )
khtml::FontDef fontDef;
QFont f = KGlobalSettings::generalFont();
- fontDef.family = f.family();
+ fontDef.family = *(f.firstFamily());
fontDef.italic = f.italic();
fontDef.weight = f.weight();
- if (m_view) {
- const KHTMLSettings *settings = m_view->part()->settings();
- QString stdfont = settings->stdFontName();
- if ( !stdfont.isEmpty() )
- fontDef.family = stdfont;
-
- fontDef.size = m_styleSelector->fontSizes()[3];
+ if (m_view) {
+ const KHTMLSettings *settings = m_view->part()->settings();
+ QString stdfont = settings->stdFontName();
+ if ( !stdfont.isEmpty() ) {
+ fontDef.family.setFamily(stdfont);
+ fontDef.family.appendFamily(0);
}
+ fontDef.size = m_styleSelector->fontSizes()[3];
+ }
//kdDebug() << "DocumentImpl::attach: setting to charset " << settings->charset() << endl;
_style->setFontDef(fontDef);
diff --git a/WebCore/kwq/KWQFont.h b/WebCore/kwq/KWQFont.h
index e7dab03..ee3fd08 100644
--- a/WebCore/kwq/KWQFont.h
+++ b/WebCore/kwq/KWQFont.h
@@ -36,6 +36,30 @@ class NSFont;
class NSString;
#endif
+class QFontFamily {
+public:
+ QFontFamily();
+ ~QFontFamily() { delete _next; }
+
+ QFontFamily(const QFontFamily& other);
+ QFontFamily& operator=(const QFontFamily& other);
+
+ void setFamily(const QString&);
+ QString family() const;
+
+ NSString* getNSFamily() const { return _family; }
+
+ QFontFamily* next() { return _next; }
+ void appendFamily(QFontFamily* family) { delete _next; _next = family; }
+
+ bool operator==(const QFontFamily &compareFontFamily) const;
+ bool operator!=(const QFontFamily &x) const { return !(*this == x); }
+
+private:
+ NSString* _family;
+ QFontFamily* _next;
+};
+
class QFont {
public:
enum Weight { Normal = 50, Bold = 63 };
@@ -45,6 +69,9 @@ public:
void setFamily(const QString &);
QString family() const;
+ QFontFamily* firstFamily() { return &_family; }
+ void setFirstFamily(const QFontFamily& family) { _family = family; }
+
void setWeight(int);
int weight() const;
bool bold() const;
@@ -58,14 +85,15 @@ public:
bool operator==(const QFont &x) const;
bool operator!=(const QFont &x) const { return !(*this == x); }
- NSString *getNSFamily() const { return _family; }
+ NSString *getNSFamily() const { return _family.getNSFamily(); }
int getNSTraits() const { return _trait; }
float getNSSize() const { return _size; }
NSFont *getNSFont() const;
-
+ NSFont* getNSFontWithFamily(QFontFamily* fontFamily) const;
+
private:
- NSString *_family;
+ QFontFamily _family;
int _trait;
float _size;
};
diff --git a/WebCore/kwq/KWQFont.mm b/WebCore/kwq/KWQFont.mm
index 0789696..86b850f 100644
--- a/WebCore/kwq/KWQFont.mm
+++ b/WebCore/kwq/KWQFont.mm
@@ -29,19 +29,39 @@
#import <Cocoa/Cocoa.h>
#import "WebCoreTextRendererFactory.h"
-QFont::QFont()
+QFontFamily::QFontFamily()
: _family(@"")
- , _trait(0)
- , _size(12.0)
+ , _next(0)
{
}
-QString QFont::family() const
+QFontFamily::QFontFamily(const QFontFamily& other)
+{
+ if (other._next)
+ _next = new QFontFamily(*(other._next));
+ else
+ _next = 0;
+ _family = other._family;
+}
+
+QFontFamily& QFontFamily::operator=(const QFontFamily& other) {
+ if (this != &other) {
+ delete _next;
+ if (other._next)
+ _next = new QFontFamily(*(other._next));
+ else
+ _next = 0;
+ _family = other._family;
+ }
+ return *this;
+}
+
+QString QFontFamily::family() const
{
return QString::fromNSString(_family);
}
-void QFont::setFamily(const QString &qfamilyName)
+void QFontFamily::setFamily(const QString &qfamilyName)
{
// Use an immutable copy of the name, but keep a set of
// all family names so we don't end up with too many objects.
@@ -57,6 +77,32 @@ void QFont::setFamily(const QString &qfamilyName)
}
}
+bool QFontFamily::operator==(const QFontFamily &compareFontFamily) const
+{
+ if ((!_next && compareFontFamily._next) ||
+ (_next && !compareFontFamily._next) ||
+ ((_next && compareFontFamily._next) && (*_next != *(compareFontFamily._next))))
+ return false;
+
+ return _family == compareFontFamily._family;
+}
+
+QFont::QFont()
+ : _trait(0)
+ , _size(12.0)
+{
+}
+
+QString QFont::family() const
+{
+ return _family.family();
+}
+
+void QFont::setFamily(const QString &qfamilyName)
+{
+ _family.setFamily(qfamilyName);
+}
+
void QFont::setWeight(int weight)
{
if (weight == Bold) {
@@ -104,3 +150,12 @@ NSFont *QFont::getNSFont() const
traits:getNSTraits()
size:getNSSize()];
}
+
+NSFont *QFont::getNSFontWithFamily(QFontFamily* family) const
+{
+ return [[WebCoreTextRendererFactory sharedFactory]
+ fontWithFamily:family->getNSFamily()
+ traits:getNSTraits()
+ size:getNSSize()];
+}
+
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list