diff options
-rw-r--r-- | src/Style.cxx | 6 | ||||
-rw-r--r-- | src/Style.h | 1 | ||||
-rw-r--r-- | src/ViewStyle.cxx | 32 | ||||
-rw-r--r-- | src/ViewStyle.h | 3 |
4 files changed, 24 insertions, 18 deletions
diff --git a/src/Style.cxx b/src/Style.cxx index b86884aa5..25efcd6e8 100644 --- a/src/Style.cxx +++ b/src/Style.cxx @@ -24,6 +24,10 @@ FontAlias::~FontAlias() { // ~Font will not release the actual font resource sine it is now 0 } +void FontAlias::MakeAlias(Font &fontOrigin) { + SetID(fontOrigin.GetID()); +} + void FontAlias::ClearFont() { SetID(0); } @@ -137,7 +141,7 @@ void Style::ClearTo(const Style &source) { } void Style::Copy(Font &font_, const FontMeasurements &fm_) { - font.SetID(font_.GetID()); + font.MakeAlias(font_); (FontMeasurements &)(*this) = fm_; #if PLAT_WX ascent = surface.Ascent(font); diff --git a/src/Style.h b/src/Style.h index 460dad490..29122b0a4 100644 --- a/src/Style.h +++ b/src/Style.h @@ -38,6 +38,7 @@ class FontAlias : public Font { public: FontAlias(); virtual ~FontAlias(); + void MakeAlias(Font &fontOrigin); void ClearFont(); }; diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 30911d3f5..24272789c 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -89,14 +89,14 @@ void FontRealised::Realise(Surface &surface, int zoomLevel) { sizeZoomed = 2; int deviceHeight = surface.DeviceHeightFont(sizeZoomed); - Create(fontName, characterSet, deviceHeight, bold, italic, extraFontFlag); - - ascent = surface.Ascent(*this); - descent = surface.Descent(*this); - externalLeading = surface.ExternalLeading(*this); - lineHeight = surface.Height(*this); - aveCharWidth = surface.AverageCharWidth(*this); - spaceWidth = surface.WidthChar(*this, ' '); + font.Create(fontName, characterSet, deviceHeight, bold, italic, extraFontFlag); + + ascent = surface.Ascent(font); + descent = surface.Descent(font); + externalLeading = surface.ExternalLeading(font); + lineHeight = surface.Height(font); + aveCharWidth = surface.AverageCharWidth(font); + spaceWidth = surface.WidthChar(font, ' '); if (frNext) { frNext->Realise(surface, zoomLevel); } @@ -372,15 +372,15 @@ void ViewStyle::Refresh(Surface &surface) { } CreateFont(styles[STYLE_DEFAULT]); - for (unsigned int i=0; i<stylesSize; i++) { - CreateFont(styles[i]); + for (unsigned int j=0; j<stylesSize; j++) { + CreateFont(styles[j]); } frFirst->Realise(surface, zoomLevel); - for (unsigned int i=0; i<stylesSize; i++) { - FontRealised *fr = frFirst->Find(styles[i]); - styles[i].Copy(*fr, *fr); + for (unsigned int k=0; k<stylesSize; k++) { + FontRealised *fr = frFirst->Find(styles[k]); + styles[k].Copy(fr->font, *fr); } maxAscent = 1; maxDescent = 1; @@ -391,11 +391,11 @@ void ViewStyle::Refresh(Surface &surface) { someStylesProtected = false; someStylesForceCase = false; - for (unsigned int i=0; i<stylesSize; i++) { - if (styles[i].IsProtected()) { + for (unsigned int l=0; l<stylesSize; l++) { + if (styles[l].IsProtected()) { someStylesProtected = true; } - if (styles[i].caseForce != Style::caseMixed) { + if (styles[l].caseForce != Style::caseMixed) { someStylesForceCase = true; } } diff --git a/src/ViewStyle.h b/src/ViewStyle.h index cf45be41f..74efa6abd 100644 --- a/src/ViewStyle.h +++ b/src/ViewStyle.h @@ -39,11 +39,12 @@ public: const char *Save(const char *name); }; -class FontRealised : public Font, public FontSpecification, public FontMeasurements { +class FontRealised : public FontSpecification, public FontMeasurements { // Private so FontRealised objects can not be copied FontRealised(const FontRealised &); FontRealised &operator=(const FontRealised &); public: + Font font; FontRealised *frNext; FontRealised(const FontSpecification &fs); virtual ~FontRealised(); |