The Birdfont Source Code


All Repositories / birdfont.git / blob – RSS feed

FontName.vala in /libbirdfont

This file is a part of the Birdfont project.

Contributing

Send patches or pull requests to johan.mattsson.m@gmail.com.
Clone this repository: git clone https://github.com/johanmattssonm/birdfont.git
Circle boundaries heads/master
1 /* 2 Copyright (C) 2014 Johan Mattsson 3 4 This library is free software; you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as 6 published by the Free Software Foundation; either version 3 of the 7 License, or (at your option) any later version. 8 9 This library is distributed in the hope that it will be useful, but 10 WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 */ 14 15 using Cairo; 16 17 namespace BirdFont { 18 19 public class FontName : Tool { 20 21 public FontName (string? name = null, string tip = "") { 22 base (null , tip); 23 24 if (name != null) { 25 base.name = (!) name; 26 } 27 28 select_action.connect ((tool) => { 29 MenuTab.select_overview (); 30 }); 31 } 32 33 public override void draw_tool (Context cr, double px, double py) { 34 Text font_name; 35 double text_height; 36 double extent; 37 double width = Toolbox.allocation_width * Toolbox.get_scale (); 38 double max_width; 39 double x = this.x - px; 40 double y = this.y - py; 41 42 cr.save (); 43 // tab label 44 font_name = new Text (); 45 font_name.set_text (BirdFont.get_current_font ().get_full_name ()); 46 text_height = 22 * Toolbox.get_scale (); 47 48 max_width = (width - 2 * x * Toolbox.get_scale ()); 49 font_name.set_font_size (text_height); 50 extent = font_name.get_extent () * Toolbox.get_scale (); 51 if (extent > max_width) { 52 text_height *= max_width / extent; 53 } 54 55 Theme.text_color (font_name, "Font Name"); 56 font_name.set_font_size (text_height); 57 font_name.draw_at_top (cr, x, y); 58 cr.restore (); 59 } 60 } 61 62 } 63