diff options
Diffstat (limited to 'src/ViewStyle.cxx')
-rw-r--r-- | src/ViewStyle.cxx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/ViewStyle.cxx b/src/ViewStyle.cxx index 8d2a60e14..2c2ac0e66 100644 --- a/src/ViewStyle.cxx +++ b/src/ViewStyle.cxx @@ -131,6 +131,8 @@ ViewStyle::ViewStyle(const ViewStyle &source) { whitespaceForeground = source.whitespaceForeground; whitespaceBackgroundSet = source.whitespaceBackgroundSet; whitespaceBackground = source.whitespaceBackground; + controlCharSymbol = source.controlCharSymbol; + controlCharWidth = source.controlCharWidth; selbar = source.selbar; selbarlight = source.selbarlight; caretcolour = source.caretcolour; @@ -204,6 +206,7 @@ void ViewStyle::Init(size_t stylesSize_) { maxDescent = 1; aveCharWidth = 8; spaceWidth = 8; + tabWidth = spaceWidth * 8; selforeset = false; selforeground = ColourDesired(0xff, 0, 0); @@ -225,6 +228,8 @@ void ViewStyle::Init(size_t stylesSize_) { whitespaceForeground = ColourDesired(0, 0, 0); whitespaceBackgroundSet = false; whitespaceBackground = ColourDesired(0xff, 0xff, 0xff); + controlCharSymbol = 0; /* Draw the control characters */ + controlCharWidth = 0; selbar = Platform::Chrome(); selbarlight = Platform::ChromeHighlight(); styles[STYLE_LINENUMBER].fore = ColourDesired(0, 0, 0); @@ -286,7 +291,7 @@ void ViewStyle::Init(size_t stylesSize_) { braceBadLightIndicator = 0; } -void ViewStyle::Refresh(Surface &surface) { +void ViewStyle::Refresh(Surface &surface, int tabInChars) { for (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) { delete it->second; } @@ -332,6 +337,12 @@ void ViewStyle::Refresh(Surface &surface) { aveCharWidth = styles[STYLE_DEFAULT].aveCharWidth; spaceWidth = styles[STYLE_DEFAULT].spaceWidth; + tabWidth = spaceWidth * tabInChars; + + controlCharWidth = 0.0; + if (controlCharSymbol >= 32) { + controlCharWidth = surface.WidthChar(styles[STYLE_CONTROLCHAR].font, controlCharSymbol); + } fixedColumnWidth = marginInside ? leftMarginWidth : 0; maskInLine = 0xffffffff; @@ -409,6 +420,13 @@ void ViewStyle::CalcLargestMarkerHeight() { } } +ColourDesired ViewStyle::WrapColour() const { + if (whitespaceForegroundSet) + return whitespaceForeground; + else + return styles[STYLE_DEFAULT].fore; +} + void ViewStyle::AllocStyles(size_t sizeNew) { size_t i=styles.size(); styles.resize(sizeNew); |