Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

gdynfont.pl - A Gimp plug_in

by simonflk (Pilgrim)
on May 13, 2002 at 21:17 UTC ( [id://166298]=sourcecode: print w/replies, xml ) Need Help??
Category: Utility Scripts
Author/Contact Info Simon Flack simonflk
http://www.simonflack.com
Description: This plugin will display information about a GDynText layer in the Gimp.

Background
I needed to find out the name of the font that I used in a .XCF a few months ago. I didn't have the font installed anymore, so GDynText selected the first font in the list. It may be that I have overlooked a simpler way of working out the font, nevertheless, this was a nice excursion into Gimp-Perl. Unless you are in a similar situation (no longer have a font, or someone gives you a Gimp file without associated fonts), this will be pretty useless because it doesn't display anything that you can't get from GDynText itself.

Installation
Copy this script into your ~/.gimp-1.2/plug-ins folder and make it executable.

Usage:
Select a GDynText layer and then select GDynFontInfo from the <Image>/Script-fu/Utils menu
#!/usr/bin/perl -w
#################################################################
# gdynfont.pl
#
# Gimp plug_in to display font details for a GDynText layer
# Author: Simon Flack
# Date: May 13 2002
#################################################################
use strict;
use Gimp qw(:auto);
use Gimp::Fu;
use Gtk '-init';

register ("gdyntext_font_info",
          "Find out the font used in a GDynText layer",
          "Display font details for a GDynText Layer",
          'Simon Flack <mail@no-spam.simonflack.com>',
          "Simon Flack",
          "13 May 2002",
          "<Image>/Script-Fu/Utils/GDynFontInfo", "*",
          [],
          \&info_from_gdyntext_layer);

exit main;

sub info_from_gdyntext_layer
{
  my ($image, $drawable) = @_;
  my $output;
  my $parasite = gimp_drawable_parasite_list($drawable);

  unless ( $parasite =~ /plug_in_gdyntext\/data/ )
  {
    # It's not a GDynText layer
    $output = "The selected layer is not a Dynamic Text Layer";
  } else {

    # Get the parasite details for the GDynText layer and parse it
    my $text_parasite =
      gimp_drawable_parasite_find($drawable, "plug_in_gdyntext/data")-
+>[2];
    my ($text, $antialias, $alignment, $rotation,
        $line_spacing, $color, $l_alignment, $font)
        = $text_parasite =~ /{([^\}]+)}/g;

    my $antialias_bool = $antialias ? "yes" : "no";
    my @layer_alignment = qw(none
                             bottom-left bottom-center bottom-right
                             middle-left center middle-right
                             top-left top-center top-right);
    my @text_alignment = qw(left center right );

    $output = <<FONTINFOOUTPUT;
text: $text
antialias: $antialias_bool
anlignment: $text_alignment[$alignment]
rotation: $rotation
line_spacing: $line_spacing
color: #$color
layer alignment: $layer_alignment[$l_alignment]
font: $font
FONTINFOOUTPUT

}

  # Display a Gtk::Window with the results
  my $window = new Gtk::Window("toplevel");
  $window->set_title("GDynFont: Font Information");
  $window->border_width(5);
  my $label = new Gtk::Label($output);
  $label->set_justify("left");
  $window->add($label);
  $label->show;
  $window->show;
  main Gtk;

}

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://166298]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2024-03-28 18:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found