From 044e20f602f76fab2b1326692bb67e7d3f5ee6a4 Mon Sep 17 00:00:00 2001 From: nyamatongwe Date: Fri, 31 Mar 2000 10:48:16 +0000 Subject: Fixed line ends. Fixed lastXChosen after Backspace or Ctrl+Backspace. --- src/Style.cxx | 202 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 101 insertions(+), 101 deletions(-) (limited to 'src/Style.cxx') diff --git a/src/Style.cxx b/src/Style.cxx index 42f9dea78..483023321 100644 --- a/src/Style.cxx +++ b/src/Style.cxx @@ -1,101 +1,101 @@ -// Scintilla source code edit control -// Style.cxx - defines the font and colour style for a class of text -// Copyright 1998-2000 by Neil Hodgson -// The License.txt file describes the conditions under which this software may be distributed. - -#include - -#include "Platform.h" - -#include "Style.h" - -Style::Style() { - aliasOfDefaultFont = true; - Clear(Colour(0,0,0), Colour(0xff,0xff,0xff), - Platform::DefaultFontSize(), 0, - false, false, false); -} - -Style::~Style() { - if (aliasOfDefaultFont) - font.SetID(0); - else - font.Release(); - aliasOfDefaultFont = false; -} - -Style &Style::operator=(const Style &source) { - if (this == &source) - return *this; - Clear(Colour(0,0,0), Colour(0xff,0xff,0xff), - 0, 0, - false, false, false); - fore.desired = source.fore.desired; - back.desired = source.back.desired; - bold = source.bold; - italic = source.italic; - size = source.size; - eolFilled = source.eolFilled; - return *this; -} - -void Style::Clear(Colour fore_, Colour back_, int size_, const char *fontName_, - bool bold_, bool italic_, bool eolFilled_) { - fore.desired = fore_; - back.desired = back_; - bold = bold_; - italic = italic_; - size = size_; - fontName = fontName_; - eolFilled = eolFilled_; - if (aliasOfDefaultFont) - font.SetID(0); - else - font.Release(); - aliasOfDefaultFont = false; -} - -bool Style::EquivalentFontTo(const Style *other) const { - if (bold != other->bold || - italic != other->italic || - size != other->size) - return false; - if (fontName == other->fontName) - return true; - if (!fontName) - return false; - if (!other->fontName) - return false; - return strcmp(fontName, other->fontName) == 0; -} - -void Style::Realise(Surface &surface, int zoomLevel, Style *defaultStyle) { - int sizeZoomed = size + zoomLevel; - if (sizeZoomed <= 2) // Hangs if sizeZoomed <= 1 - sizeZoomed = 2; - - if (aliasOfDefaultFont) - font.SetID(0); - else - font.Release(); - int deviceHeight = (sizeZoomed * surface.LogPixelsY()) / 72; - aliasOfDefaultFont = defaultStyle && - (EquivalentFontTo(defaultStyle) || !fontName); - if (aliasOfDefaultFont) { - font.SetID(defaultStyle->font.GetID()); - } else if (fontName) { - font.Create(fontName, deviceHeight, bold, italic); - } else { - font.SetID(0); - } - - ascent = surface.Ascent(font); - descent = surface.Descent(font); - // Probably more typographically correct to include leading - // but that means more complex drawing as leading must be erased - //lineHeight = surface.ExternalLeading() + surface.Height(); - externalLeading = surface.ExternalLeading(font); - lineHeight = surface.Height(font); - aveCharWidth = surface.AverageCharWidth(font); - spaceWidth = surface.WidthChar(font, ' '); -} +// Scintilla source code edit control +// Style.cxx - defines the font and colour style for a class of text +// Copyright 1998-2000 by Neil Hodgson +// The License.txt file describes the conditions under which this software may be distributed. + +#include + +#include "Platform.h" + +#include "Style.h" + +Style::Style() { + aliasOfDefaultFont = true; + Clear(Colour(0,0,0), Colour(0xff,0xff,0xff), + Platform::DefaultFontSize(), 0, + false, false, false); +} + +Style::~Style() { + if (aliasOfDefaultFont) + font.SetID(0); + else + font.Release(); + aliasOfDefaultFont = false; +} + +Style &Style::operator=(const Style &source) { + if (this == &source) + return *this; + Clear(Colour(0,0,0), Colour(0xff,0xff,0xff), + 0, 0, + false, false, false); + fore.desired = source.fore.desired; + back.desired = source.back.desired; + bold = source.bold; + italic = source.italic; + size = source.size; + eolFilled = source.eolFilled; + return *this; +} + +void Style::Clear(Colour fore_, Colour back_, int size_, const char *fontName_, + bool bold_, bool italic_, bool eolFilled_) { + fore.desired = fore_; + back.desired = back_; + bold = bold_; + italic = italic_; + size = size_; + fontName = fontName_; + eolFilled = eolFilled_; + if (aliasOfDefaultFont) + font.SetID(0); + else + font.Release(); + aliasOfDefaultFont = false; +} + +bool Style::EquivalentFontTo(const Style *other) const { + if (bold != other->bold || + italic != other->italic || + size != other->size) + return false; + if (fontName == other->fontName) + return true; + if (!fontName) + return false; + if (!other->fontName) + return false; + return strcmp(fontName, other->fontName) == 0; +} + +void Style::Realise(Surface &surface, int zoomLevel, Style *defaultStyle) { + int sizeZoomed = size + zoomLevel; + if (sizeZoomed <= 2) // Hangs if sizeZoomed <= 1 + sizeZoomed = 2; + + if (aliasOfDefaultFont) + font.SetID(0); + else + font.Release(); + int deviceHeight = (sizeZoomed * surface.LogPixelsY()) / 72; + aliasOfDefaultFont = defaultStyle && + (EquivalentFontTo(defaultStyle) || !fontName); + if (aliasOfDefaultFont) { + font.SetID(defaultStyle->font.GetID()); + } else if (fontName) { + font.Create(fontName, deviceHeight, bold, italic); + } else { + font.SetID(0); + } + + ascent = surface.Ascent(font); + descent = surface.Descent(font); + // Probably more typographically correct to include leading + // but that means more complex drawing as leading must be erased + //lineHeight = surface.ExternalLeading() + surface.Height(); + externalLeading = surface.ExternalLeading(font); + lineHeight = surface.Height(font); + aveCharWidth = surface.AverageCharWidth(font); + spaceWidth = surface.WidthChar(font, ' '); +} -- cgit v1.2.3