@@ -94,43 +94,71 @@ + (NSCharacterSet *)blockDrawingCharacters {
94
94
typedef NS_OPTIONS (NSUInteger , iTermPowerlineDrawingOptions) {
95
95
iTermPowerlineDrawingOptionsNone = 0 ,
96
96
iTermPowerlineDrawingOptionsMirrored = 1 << 0 ,
97
- iTermPowerlineDrawingOptionsHalfWidth = 2 << 0 ,
97
+ iTermPowerlineDrawingOptionsHalfWidth = 1 << 1 ,
98
+
99
+ iTermPowerlineDrawingOptionsFullBleedLeft = 1 << 2 ,
100
+ iTermPowerlineDrawingOptionsFullBleedRight = 1 << 3 ,
98
101
};
99
102
100
103
+ (NSDictionary <NSNumber *, NSArray *> *)powerlineExtendedSymbols {
101
104
if (![iTermAdvancedSettingsModel supportPowerlineExtendedSymbols ]) {
102
105
return @{};
103
106
}
104
107
return @{ @(0xE0A3 ): @[@" uniE0A3_column-number" , @(iTermPowerlineDrawingOptionsNone)],
105
- @(0xE0B0 ): @[@" uniE0B0_Powerline_normal-left" , @(iTermPowerlineDrawingOptionsNone)],
106
- @(0xE0B2 ): @[@" uniE0B2_Powerline_normal-right" , @(iTermPowerlineDrawingOptionsNone)],
107
- @(0xE0B4 ): @[@" uniE0B4_right-half-circle-thick" , @(iTermPowerlineDrawingOptionsNone)],
108
+ @(0xE0B0 ): @[@" uniE0B0_Powerline_normal-left" ,
109
+ @(iTermPowerlineDrawingOptionsNone |
110
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
111
+ @(0xE0B2 ): @[@" uniE0B2_Powerline_normal-right" ,
112
+ @(iTermPowerlineDrawingOptionsNone |
113
+ iTermPowerlineDrawingOptionsFullBleedRight)],
114
+ @(0xE0B4 ): @[@" uniE0B4_right-half-circle-thick" ,
115
+ @(iTermPowerlineDrawingOptionsNone |
116
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
108
117
@(0xE0B5 ): @[@" uniE0B5_right-half-circle-thin" , @(iTermPowerlineDrawingOptionsNone)],
109
- @(0xE0B6 ): @[@" uniE0B6_left-half-circle-thick" , @(iTermPowerlineDrawingOptionsNone)],
118
+ @(0xE0B6 ): @[@" uniE0B6_left-half-circle-thick" , @(
119
+ iTermPowerlineDrawingOptionsNone |
120
+ iTermPowerlineDrawingOptionsFullBleedRight)],
110
121
@(0xE0B7 ): @[@" uniE0B7_left-half-circle-thin" , @(iTermPowerlineDrawingOptionsNone)],
111
- @(0xE0B8 ): @[@" uniE0B8_lower-left-triangle" , @(iTermPowerlineDrawingOptionsNone)],
112
- @(0xE0C0 ): @[@" uniE0C0_flame-thick" , @(iTermPowerlineDrawingOptionsNone)],
122
+ @(0xE0B8 ): @[@" uniE0B8_lower-left-triangle" ,
123
+ @(iTermPowerlineDrawingOptionsNone |
124
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
125
+ @(0xE0C0 ): @[@" uniE0C0_flame-thick" , @(
126
+ iTermPowerlineDrawingOptionsNone |
127
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
113
128
@(0xE0C1 ): @[@" uniE0C1_flame-thin" , @(iTermPowerlineDrawingOptionsNone)],
114
- @(0xE0C2 ): @[@" uniE0C0_flame-thick" , @(iTermPowerlineDrawingOptionsMirrored)],
129
+ @(0xE0C2 ): @[@" uniE0C0_flame-thick" , @(
130
+ iTermPowerlineDrawingOptionsMirrored |
131
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
115
132
@(0xE0C3 ): @[@" uniE0C1_flame-thin" , @(iTermPowerlineDrawingOptionsMirrored)],
116
133
@(0xE0CE ): @[@" uniE0CE_lego_separator" , @(iTermPowerlineDrawingOptionsNone)],
117
134
@(0xE0CF ): @[@" uniE0CF_lego_separator_thin" , @(iTermPowerlineDrawingOptionsNone)],
118
- @(0xE0D1 ): @[@" uniE0D1_lego_block_sideways" , @(iTermPowerlineDrawingOptionsNone)],
135
+ @(0xE0D1 ): @[@" uniE0D1_lego_block_sideways" , @(
136
+ iTermPowerlineDrawingOptionsNone |
137
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
119
138
120
139
// These were exported to PDF using FontForge
121
140
@(0xE0C4 ): @[@" uniE0C4_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
122
141
@(0xE0C5 ): @[@" uniE0C4_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsMirrored)],
123
142
@(0xE0C6 ): @[@" uniE0C6_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
124
143
@(0xE0C7 ): @[@" uniE0C6_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsMirrored)],
125
- @(0xE0C8 ): @[@" uniE0C8_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
126
- @(0xE0C9 ): @[@" uniE0C9_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
144
+ @(0xE0C8 ): @[@" uniE0C8_PowerlineExtraSymbols" ,
145
+ @(iTermPowerlineDrawingOptionsNone |
146
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
147
+ @(0xE0C9 ): @[@" uniE0C9_PowerlineExtraSymbols" , @(
148
+ iTermPowerlineDrawingOptionsNone |
149
+ iTermPowerlineDrawingOptionsFullBleedLeft)],
127
150
@(0xE0CA ): @[@" uniE0C8_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsMirrored)],
128
- @(0xE0CB ): @[@" uniE0C9_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsMirrored)],
151
+ @(0xE0CB ): @[@" uniE0C9_PowerlineExtraSymbols" , @(
152
+ iTermPowerlineDrawingOptionsMirrored |
153
+ iTermPowerlineDrawingOptionsFullBleedRight)],
129
154
@(0xE0CC ): @[@" uniE0CC_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
130
155
@(0xE0CD ): @[@" uniE0CD_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
131
156
@(0xE0D0 ): @[@" uniE0D0_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsNone)],
132
- @(0xE0D2 ): @[@" uniE0D2_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsHalfWidth)],
133
- @(0xE0D4 ): @[@" uniE0D2_PowerlineExtraSymbols" , @(iTermPowerlineDrawingOptionsHalfWidth | iTermPowerlineDrawingOptionsMirrored)],
157
+ @(0xE0D2 ): @[@" uniE0D2_PowerlineExtraSymbols" , @(
158
+ iTermPowerlineDrawingOptionsHalfWidth)],
159
+ @(0xE0D4 ): @[@" uniE0D2_PowerlineExtraSymbols" , @(
160
+ iTermPowerlineDrawingOptionsHalfWidth |
161
+ iTermPowerlineDrawingOptionsMirrored)],
134
162
};
135
163
}
136
164
@@ -328,11 +356,12 @@ + (void)performBlockWithoutAntialiasing:(void (^)(void))block {
328
356
}
329
357
330
358
+ (void )drawPowerlineCode : (unichar )code
331
- cellSize : (NSSize )regularCellSize
332
- color : (CGColorRef)color
333
- scale : (CGFloat)scale
334
- isPoints : (BOOL )isPoints
335
- offset : (CGPoint)offset {
359
+ cellSize : (NSSize )regularCellSize
360
+ color : (CGColorRef)color
361
+ scale : (CGFloat)scale
362
+ isPoints : (BOOL )isPoints
363
+ offset : (CGPoint)offset {
364
+
336
365
NSSize cellSize = regularCellSize;
337
366
if ([[iTermBoxDrawingBezierCurveFactory doubleWidthPowerlineSymbols ] containsObject: @(code)]) {
338
367
cellSize.width *= 2 ;
@@ -400,7 +429,11 @@ + (void)drawComponents:(NSString *)components
400
429
if (!paths) {
401
430
return ;
402
431
}
432
+ CGContextRef cgContext = [[NSGraphicsContext currentContext ] CGContext ];
433
+ CGContextSaveGState (cgContext);
434
+ CGContextClipToRect (cgContext, CGRectMake (0 , 0 , cellSize.width , cellSize.height ));
403
435
[self drawPaths: paths color: color scale: scale isPoints: isPoints solid: solid];
436
+ CGContextRestoreGState (cgContext);
404
437
}
405
438
406
439
+ (NSImage *)bitmapForImage : (NSImage *)image {
@@ -533,9 +566,27 @@ + (void)drawPDFWithName:(NSString *)pdfName
533
566
fraction: 1
534
567
respectFlipped: YES
535
568
hints: nil ];
569
+ [self drawBleedForImage: (NSImageRep *)imageRep
570
+ destination: destination
571
+ options: options
572
+ color: [NSColor colorWithCGColor: color]];
536
573
[ctx restoreGraphicsState ];
537
574
}
538
575
576
+ + (void )drawBleedForImage :imageRep
577
+ destination : (NSRect )destination
578
+ options : (iTermPowerlineDrawingOptions)options
579
+ color : (NSColor *)color {
580
+ const CGFloat size = 1 ;
581
+ [color set ];
582
+ if (options & iTermPowerlineDrawingOptionsFullBleedLeft) {
583
+ NSRectFill (NSMakeRect (NSMinX (destination), NSMinY (destination), size, NSHeight (destination)));
584
+ }
585
+ if (options & iTermPowerlineDrawingOptionsFullBleedRight) {
586
+ NSRectFill (NSMakeRect (NSMaxX (destination) - size, NSMinY (destination), size, NSHeight (destination)));
587
+ }
588
+ }
589
+
539
590
+ (BOOL )isPowerlineGlyph : (unichar )code {
540
591
switch (code) {
541
592
case 0xE0A0 : // Version control branch
0 commit comments