-
Notifications
You must be signed in to change notification settings - Fork 2
/
SimpleBitmapRenderer.h
38 lines (30 loc) · 1.5 KB
/
SimpleBitmapRenderer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//
// SimpleBitmapRenderer.h
// Copyright © 2018 Ben Zotto. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "UIntTypes.h"
#import "BitmapFont.h"
#import "MacRomanString.h"
@interface SimpleBitmapRenderer : NSObject
@property (readonly) UIntSize size;
@property (strong) BitmapFont * currentFont;
- (id)initWithSize:(UIntSize)size;
// Returns the width from the leftmost origin start to the rightmost pixel for given string
// in the current font. Will not trim printable whitespace which will be
// included in measurement.
- (NSUInteger)measureWidthForString:(MacRomanString *)str;
// Render the string onto the canvas using the the origin point (at baseline
// of first character) with the current font. No line-wrapping or any layout at all.
- (void)renderString:(MacRomanString *)str atOrigin:(UIntPoint)origin;
// Layout the string inside the rect and render onto the canvas. Does
// best effort simple word wrapping. Does not pixel-clip to the rect; glyphs that will
// not fall wholly within the rect will not be rendered. The word wrapping algorithm
// is naive and doesn't handle edge cases like double-spaces.
- (void)renderString:(MacRomanString *)str inRect:(UIntRect)rect;
// Render the complete set of present characters in the current font, into the rect as possible.
- (void)renderCharSetInRect:(UIntRect)rect;
// Retrieving images of the rendered "canvas".
- (NSString *)bitmapImageAsString;
- (NSData *)bitmapImageAsPNGDataWithScale:(NSUInteger)scale showingGrid:(BOOL)showGrid;
@end