1 // Scintilla source code edit control
3 ** Defines the font and colour style for a class of text.
5 // Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
12 #include "Scintilla.h"
16 using namespace Scintilla
;
19 FontAlias::FontAlias() {
22 FontAlias::~FontAlias() {
24 // ~Font will not release the actual font resource sine it is now 0
27 void FontAlias::MakeAlias(Font
&fontOrigin
) {
28 SetID(fontOrigin
.GetID());
31 void FontAlias::ClearFont() {
35 bool FontSpecification::EqualTo(const FontSpecification
&other
) const {
36 return bold
== other
.bold
&&
37 italic
== other
.italic
&&
39 characterSet
== other
.characterSet
&&
40 fontName
== other
.fontName
;
43 FontMeasurements::FontMeasurements() {
47 void FontMeasurements::Clear() {
57 Style::Style() : FontSpecification() {
58 Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
59 Platform::DefaultFontSize(), 0, SC_CHARSET_DEFAULT
,
60 false, false, false, false, caseMixed
, true, true, false);
63 Style::Style(const Style
&source
) : FontSpecification(), FontMeasurements() {
64 Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
66 false, false, false, false, caseMixed
, true, true, false);
67 fore
.desired
= source
.fore
.desired
;
68 back
.desired
= source
.back
.desired
;
69 characterSet
= source
.characterSet
;
71 italic
= source
.italic
;
73 eolFilled
= source
.eolFilled
;
74 underline
= source
.underline
;
75 caseForce
= source
.caseForce
;
76 visible
= source
.visible
;
77 changeable
= source
.changeable
;
78 hotspot
= source
.hotspot
;
84 Style
&Style::operator=(const Style
&source
) {
87 Clear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),
88 0, 0, SC_CHARSET_DEFAULT
,
89 false, false, false, false, caseMixed
, true, true, false);
90 fore
.desired
= source
.fore
.desired
;
91 back
.desired
= source
.back
.desired
;
92 characterSet
= source
.characterSet
;
94 italic
= source
.italic
;
96 eolFilled
= source
.eolFilled
;
97 underline
= source
.underline
;
98 caseForce
= source
.caseForce
;
99 visible
= source
.visible
;
100 changeable
= source
.changeable
;
104 void Style::Clear(ColourDesired fore_
, ColourDesired back_
, int size_
,
105 const char *fontName_
, int characterSet_
,
106 bool bold_
, bool italic_
, bool eolFilled_
,
107 bool underline_
, ecaseForced caseForce_
,
108 bool visible_
, bool changeable_
, bool hotspot_
) {
109 fore
.desired
= fore_
;
110 back
.desired
= back_
;
111 characterSet
= characterSet_
;
115 fontName
= fontName_
;
116 eolFilled
= eolFilled_
;
117 underline
= underline_
;
118 caseForce
= caseForce_
;
120 changeable
= changeable_
;
123 FontMeasurements::Clear();
126 void Style::ClearTo(const Style
&source
) {
143 void Style::Copy(Font
&font_
, const FontMeasurements
&fm_
) {
144 font
.MakeAlias(font_
);
146 font
.SetAscent(fm_
.ascent
);
148 (FontMeasurements
&)(*this) = fm_
;