class interface LOGICAL_FONT creation make from_string (str: STRING) -- Init object from string. require valid: str /= Void ensure done: -- success implies to_string.is_equal(str) feature(s) from P_TEXT_OBJECT -- Public interface to_string: STRING ensure is_copy: Result /= Void from_string (str: STRING) -- Init object from string. require valid: str /= Void ensure done: -- success implies to_string.is_equal(str) feature(s) from LOGICAL_FONT -- Copy/Equality copy (other: like Current) -- Update current object using fields of object attached -- to other, so as to yield equal objects. require other_not_void: other /= Void ensure is_equal: is_equal(other) is_equal (other: like Current): BOOLEAN -- Is other attached to an object considered equal to -- current object ? require other_not_void: other /= Void ensure consistent: standard_is_equal(other) implies Result; symmetric: Result implies other.is_equal(Current) feature(s) from LOGICAL_FONT -- Typeface name is_default_face: BOOLEAN -- Is the current typeface the default? face_name: STRING -- Get the current face name. require exist: not is_default_face ensure is_copy: Result /= Void set_face_name (str: STRING) -- Set required typeface name (may be an empty string). require valid_string: str /= Void ensure done: not is_default_face reset_face_name -- Use default typeface. ensure done: is_default_face feature(s) from LOGICAL_FONT -- Height (Points) is_point: BOOLEAN -- Is the current height the point value? is_cell_height: BOOLEAN -- Is the current height the character cell height? is_character_height: BOOLEAN -- Is the current height the character height? is_default_height: BOOLEAN -- Is the current height the default height? height_value: INTEGER -- Height (semantics depending on is_point, etc). require meaningful: not is_default_height ensure valid: Result >= 0 set_point (h: INTEGER) -- Set the character height in points. require valid_height: h > 0; no_width: is_default_width ensure done: is_point and not is_default_height and not is_character_height and not is_cell_height set_cell_height (h: INTEGER) -- Set the required character cell height (in logical units). require valid_height: h > 0 ensure done: is_cell_height and not is_default_height and not is_character_height and not is_point set_character_height (h: INTEGER) -- Set the required character height (in logical units). require valid_height: h > 0 ensure done: is_character_height and not is_cell_height and not is_default_height and not is_point reset_height -- Use default height. ensure done: is_default_height and not is_cell_height and not is_point and not is_character_height feature(s) from LOGICAL_FONT -- Style reset_style -- Reset style to normal. is_italic: BOOLEAN -- Is italic? set_italic -- Use italics. ensure done: is_italic reset_italic -- Do not use italics. ensure done: not is_italic is_underline: BOOLEAN -- Is underlined? set_underline -- Underline. ensure done: is_underline reset_underline -- Do not underline. ensure done: not is_underline feature(s) from LOGICAL_FONT -- Standard weight constants. Thin: INTEGER Extra_light: INTEGER Light: INTEGER Normal: INTEGER Medium: INTEGER Semi_bold: INTEGER Bold: INTEGER Extra_bold: INTEGER Heavy: INTEGER feature(s) from LOGICAL_FONT -- Weight (point) weight: INTEGER -- Current weight. is_default_weight: BOOLEAN -- Is current weight the default? set_weight (value: INTEGER) -- Set weight (1-1000). require valid_weight: value > 0 and value <= 1000 reset_weight -- Use default weight. feature(s) from LOGICAL_FONT -- Line orientation line_orientation: INTEGER -- Get line orientation angle. set_line_orientation (angle: INTEGER) -- Line orientation, 10th of degree, x-axis, anticlockwise. feature(s) from LOGICAL_FONT -- (Extended) Character orientation character_orientation: INTEGER -- Get character orientation. set_character_orientation (angle: INTEGER) -- Individual character orientation, 10th of degree, x-axis, -- anticlockwise. feature(s) from LOGICAL_FONT -- (Extended) Width width: INTEGER -- Get current width. is_default_width: BOOLEAN -- Is default width? reset_width -- Font width optimised from optimal aspect ratio. ensure done: is_default_width set_width (w: INTEGER) -- Set required width of font. require valid_width: w > 0 ensure done: not is_default_width feature(s) from LOGICAL_FONT -- (Extended) strike out is_strike_out: BOOLEAN -- Is text struck out? set_strike_out -- Enable strike out. ensure done: is_strike_out reset_strike_out -- Disable strike out. ensure done: not is_strike_out feature(s) from LOGICAL_FONT -- (Extended) Pitch is_pitch_fixed: BOOLEAN -- Fixed-size font? is_pitch_unknown: BOOLEAN -- Unknown pitch? is_pitch_variable: BOOLEAN -- Proportional font? reset_pitch ensure done: is_pitch_unknown set_pitch_fixed ensure done: is_pitch_fixed set_pitch_variable ensure done: is_pitch_variable feature(s) from LOGICAL_FONT -- (Extended) Font family is_family_unknown: BOOLEAN -- Font family is not known. is_family_decorative: BOOLEAN -- Decorative: novelty font such as old english. is_family_swiss: BOOLEAN -- Swiss: proportional and sans-serif. is_family_roman: BOOLEAN -- Roman: proportional and serif (classic font such as Times). is_family_modern: BOOLEAN -- Modern: fixed-pitch (such as Courier). is_family_script: BOOLEAN -- Script: handwriting like. reset_family -- No family preference. ensure done: is_family_unknown set_family_decorative ensure done: is_family_decorative set_family_swiss ensure done: is_family_swiss set_family_roman ensure done: is_family_roman set_family_modern ensure done: is_family_modern set_family_script ensure done: is_family_script feature(s) from LOGICAL_FONT -- (Extended) charset is_charset_ansi: BOOLEAN -- Is font using ANSI (ISO Latin-1) character set? is_charset_default: BOOLEAN -- No specified character set. is_charset_symbol: BOOLEAN -- Symbol font? is_charset_oem: BOOLEAN -- Is OEM (usually PC437) character set? reset_charset -- Use Windows' ANSI (Latin-1) or Unicode charset. ensure done: is_charset_ansi set_charset_ansi -- Use Windows' ANSI (Latin-1) or Unicode charset. ensure done: is_charset_ansi set_charset_default -- Use default charset. ensure done: is_charset_default set_charset_symbol -- Use symbol charset. ensure done: is_charset_symbol set_charset_oem -- Use OEM (device dependent) charset ensure done: is_charset_oem invariant init: struct /= Void; end of LOGICAL_FONT