diff options
Diffstat (limited to 'src')
| -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(); | 
