Cache needed fonts.

Obtaining a font has become rather expensive in recent gnustep, so cache
fonts, obtaining new ones only when needed rather than every redraw. Makes
things snappy again :)
This commit is contained in:
Bill Currie 2011-04-16 12:17:23 +09:00
parent 36ec375893
commit fb65cd2b44
9 changed files with 30 additions and 8 deletions

View file

@ -179,7 +179,7 @@ XYDrag
[[NSColor colorWithCalibratedRed: 1.0 green: 0.5 blue: 0.0 alpha: 1.0]
set];
[[NSFont systemFontOfSize: 10 / [xyview_i currentScale]] set];
[[xyview_i scaledFont] set];
[path removeAllPoints];
for (i = 0; i < num; i++) {
@ -202,7 +202,7 @@ XYDrag
NSMutableDictionary *attribs = [NSMutableDictionary dictionary];
[[NSColor colorWithCalibratedRed: 1. green: 0.5 blue: 0. alpha: 1.] set];
[[NSFont systemFontOfSize: 10 / [xyview_i currentScale]] set];
[[xyview_i scaledFont] set];
[path removeAllPoints];
for (i = 0; i < num; i++) {

View file

@ -7,6 +7,7 @@ extern id keypairview_i;
@interface KeypairView: NSView
{
NSFont *font;
}
- (id) calcViewSize;

View file

@ -14,6 +14,7 @@ initWithFrame:
- (id) initWithFrame: (NSRect)frameRect
{
[super initWithFrame: frameRect];
font = [[NSFont systemFontOfSize: FONTSIZE] retain];
keypairview_i = self;
return self;
}
@ -55,7 +56,7 @@ initWithFrame:
[[NSColor lightGrayColor] set];
NSRectFill (NSMakeRect (0, 0, _bounds.size.width, _bounds.size.height));
[[NSFont systemFontOfSize: FONTSIZE] set];
[font set];
[[NSColor blackColor] set];
pair = [[map_i currentEntity] epairs];

View file

@ -5,6 +5,7 @@
@interface TextureView: NSView
{
NSFont *font;
id parent_i;
int deselectIndex;
}

View file

@ -16,6 +16,7 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
- (id) init
{
font = [[NSFont systemFontOfSize: FONTSIZE] retain];
deselectIndex = -1;
return self;
}
@ -51,7 +52,7 @@ NOTE: I am specifically not using cached image reps, because the data is also ne
selected = [parent_i getSelectedTexture];
list_i = [parent_i getList];
[[NSFont systemFontOfSize: FONTSIZE] set];
[font set];
[[NSColor lightGrayColor] set];
NSRectFill (rects);

View file

@ -30,6 +30,8 @@ void XYlineto (vec3_t pt);
{
NSRect realbounds, newrect, combinedrect;
NSPoint midpoint;
NSFont *font;
NSFont *scaledFont;
int gridsize;
float scale;
@ -72,6 +74,8 @@ void XYlineto (vec3_t pt);
- (int) gridsize;
- (float) snapToGrid: (float)f;
- (NSFont *) scaledFont;
@end
@interface NSView (XYView)

View file

@ -58,6 +58,8 @@ initWithFrame:
[super initWithFrame: frameRect];
[self allocateGState];
font = [[NSFont systemFontOfSize: 10] retain];
realbounds = NSMakeRect (0, 0, 0, 0);
gridsize = 16;
@ -273,6 +275,7 @@ Called when the scaler popup on the window is used
{
NSRect rect;
NSPoint mid, org, origin;
NSFont *f;
float nscale;
nscale = [[[sender selectedCell] title] floatValue] / 100;
@ -280,6 +283,10 @@ Called when the scaler popup on the window is used
if (nscale == scale)
return NULL;
f = [[NSFont systemFontOfSize: 10 / nscale] retain];
[scaledFont release];
scaledFont = f;
// keep the center of the view constant
rect = [_super_view bounds];
mid.x = rect.size.width / 2;
@ -804,7 +811,7 @@ NSRect xy_draw_rect;
newrect.size.width = newrect.size.height = -2 * 99999;
// setup for text
[[NSFont systemFontOfSize: 10] set];
[font set];
if (drawmode == dr_texture || drawmode == dr_flat) {
[quakeed_i xyNoRestore: [self visibleRect]];
@ -1319,4 +1326,9 @@ rightMouseDown
return self;
}
- (NSFont *) scaledFont
{
return scaledFont;
}
@end

View file

@ -24,6 +24,7 @@ extern float zplanedir;
vec3_t origin;
NSBezierPath *checker;
NSFont *font;
}
- (id) clearBounds;

View file

@ -27,6 +27,7 @@ initWithFrame:
NSPoint pt;
NSBezierPath *path;
font = [[NSFont systemFontOfSize: 10] retain];
path = checker = [NSBezierPath new];
[path setLineWidth: 0.3];
[path moveToPoint: NSMakePoint (-16, -16)];
@ -185,7 +186,7 @@ Called when the scaler popup on the window is used
return self;
}
- (id) getBounds: (float *)top: (float *)bottom;
- (id) getBounds: (float *)top: (float *)bottom
{
*top = topbound;
*bottom = bottombound;
@ -363,7 +364,7 @@ Rect is in global world (unscaled) coordinates
[path removeAllPoints];
[[NSColor colorWithCalibratedWhite: 0.0 / 16.0 alpha: 1.0] set]; // for text
[[NSFont systemFontOfSize: 10] set];
[font set];
for ( ; y <= stopy; y += 64) {
if (showcoords) {
@ -431,7 +432,7 @@ drawSelf
[self drawGrid: rect];
// draw zplane
// [self drawZplane]; FIXME zplane doesn't do anything yet
[self drawZplane]; //FIXME zplane doesn't do anything yet
// draw all entities
[map_i makeUnselectedPerform: @selector (ZDrawSelf)];