class Text attr_reader :width, :height, :data def initialize(w, font_name, font_size, align, text) rect = NSMakeRect(0, 0, w, 128) view = NSTextView.alloc.initWithFrame(rect) view.textContainer.setWidthTracksTextView(true) view.textContainer.setHeightTracksTextView(true) view.setBackgroundColor(NSColor.clearColor) view.setTypingAttributes({ NSForegroundColorAttributeName => NSColor.whiteColor }) view.setFont(NSFont.fontWithName_size(font_name, font_size)) case align when :left then view.setAlignment(NSLeftTextAlignment) when :right then view.setAlignment(NSRightTextAlignment) when :center then view.setAlignment(NSCenterTextAlignment) end view.setString(NSString.stringWithUTF8String(text)) view.setMinSize(NSMakeSize(w, 1)) view.sizeToFit() size = view.bounds.size @width = size.width @height = size.height @data = render_bitmap_in_cgcontext(@width, @height) do |context| nscontext = GraphicsContextFromCGContext(context, false) view.displayRectIgnoringOpacity_inContext(view.bounds, nscontext) end end end