! Copyright (C) 2005, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays hashtables io kernel math math.functions namespaces make opengl sequences strings splitting ui.gadgets ui.gadgets.tracks ui.gadgets.packs fonts ui.render ui.pens.solid ui.text colors colors.constants models combinators ; IN: ui.gadgets.labels ! A label gadget draws a string. TUPLE: label < gadget text font ; SLOT: string M: label string>> ( label -- string ) text>> dup string? [ "\n" join ] unless ; inline : ?string-lines ( string -- string/array ) CHAR: \n over memq? [ string-lines ] when ; ERROR: not-a-string object ; M: label (>>string) ( string label -- ) [ { { [ dup string-array? ] [ ] } { [ dup string? ] [ ?string-lines ] } [ not-a-string ] } cond ] dip (>>text) ; inline : label-theme ( gadget -- gadget ) sans-serif-font >>font ; inline : new-label ( string class -- label ) new-gadget swap >>string label-theme ; inline :