X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=example%2Fmdump.c;h=38f167f033ee74e661eacd91610929077a0da4d4;hb=cb004159a4b9f304416f3c91f8ad36f455a0094d;hp=cba05ca3d25e528794345e328f943027d049ef3a;hpb=eccbc4c9a2ff2af3f0c430f69da7441bf4ec2e2c;p=m17n%2Fm17n-lib.git diff --git a/example/mdump.c b/example/mdump.c index cba05ca..38f167f 100644 --- a/example/mdump.c +++ b/example/mdump.c @@ -21,13 +21,13 @@ 02111-1307, USA. */ /***en - @enpage mdump dump text image + @enpage m17n-dump dump text image - @section mdump-synopsis SYNOPSIS + @section m17n-dump-synopsis SYNOPSIS - mdump [ OPTION ... ] [ FILE ] + m17n-dump [ OPTION ... ] [ FILE ] - @section mdump-description DESCRIPTION + @section m17n-dump-description DESCRIPTION Dump a text as PNG image file. @@ -101,6 +101,10 @@ Prefer a font specified for the language LANG. LANG must be a 2-letter code of ISO 630 (e.g. "en" for English). +
  • -r + + Specify that the orientation of the text is right-to-left. +
  • -q Quiet mode. Don't print any messages. @@ -116,13 +120,13 @@ */ /***ja - @japage mdump ¥Æ¥­¥¹¥È²èÁü¤Î¥À¥ó¥× + @japage m17n-dump ¥Æ¥­¥¹¥È²èÁü¤Î¥À¥ó¥× - @section mdump-synopsis SYNOPSIS + @section m17n-dump-synopsis SYNOPSIS - mdump [ OPTION ... ] [ FILE ] + m17n-dump [ OPTION ... ] [ FILE ] - @section mdump-description DESCRIPTION + @section m17n-dump-description DESCRIPTION ¥Æ¥­¥¹¥È¤ò PNG ²èÁü¤È¤·¤Æ¥À¥ó¥×¤¹¤ë¡£ @@ -213,6 +217,7 @@ #include #include #include +#include #include #include "config.h" @@ -274,7 +279,7 @@ help_exit (char *prog, int exit_code) printf (" dumped into the file \"output.png\".\n"); printf ("The following OPTIONs are available.\n"); printf (" %-13s %s", "-s SIZE", - "Font size in point (default 12).\n"); + "Font size in 1/10 point (default 120).\n"); printf (" %-13s %s", "-d DPI", "Resolution in dots per inch (defualt 300).\n"); printf (" %-13s %s", "-p PAPER", @@ -289,6 +294,12 @@ help_exit (char *prog, int exit_code) "String containing a shell command line to be used as a filter.\n"); printf (" %-13s %s", "-w", "Each line is broken at word boundary.\n"); printf (" %-13s %s", "-a", "Enable anti-alias drawing.\n"); + printf (" %-13s %s", "--family FAMILY", + "Prefer a font whose family is FAMILY.\n"); + printf (" %-13s %s", "--language LANG", + "Prefer a font specified for the langauge LANG.\n"); + printf (" %-13s %s", "-r", + "Specify that the orientation of the text is right-to-left.\n"); printf (" %-13s %s", "-q", "Quiet mode. Don't print any messages.\n"); printf (" %-13s %s", "--version", "Print the version number.\n"); printf (" %-13s %s", "-h, --help", "Print this message.\n"); @@ -345,9 +356,9 @@ find_page_end (MFrame *frame, int height, MText *mt, int pos, while (to < next) { mdraw_glyph_info (frame, mt, to, to, control, &info); - if (y + info.this.height > height) + if (y + info.metrics.height > height) break; - y += info.this.height; + y += info.metrics.height; to = info.line_to; } break; @@ -360,25 +371,6 @@ find_page_end (MFrame *frame, int height, MText *mt, int pos, return to; } - -/* Table to convert a byte of LSBFirst to MSBFirst. */ -char reverse_bit_order[256]; - -/* Initialize the above table. */ - -void -init_reverse_bit_order () -{ - int i; - - for (i = 0; i < 256; i++) - reverse_bit_order[i] - = (((i & 1) << 7) | ((i & 2) << 5) | ((i & 4) << 3) | ((i & 8) << 1) - | ((i & 16) >> 1) | ((i & 32) >> 3) - | ((i & 64) >> 5) | ((i & 128) >> 7)); -} - - /* Dump the image in IMAGE into a file whose name is generated from FILENAME and PAGE_INDEX (if it is not zero). */ @@ -445,6 +437,7 @@ main (int argc, char **argv) int anti_alias = 0; char *family_name = NULL; char *lang_name = NULL; + int r2l = 0; int i; int page_index; gdImagePtr image; @@ -466,7 +459,7 @@ main (int argc, char **argv) help_exit (argv[0], 0); else if (! strcmp (argv[i], "--version")) { - printf ("mdump (m17n library) %s\n", PROGRAM_VERSION); + printf ("m17n-dump (m17n library) %s\n", PROGRAM_VERSION); printf ("Copyright (C) 2003, 2004 AIST, JAPAN\n"); exit (0); } @@ -558,6 +551,10 @@ main (int argc, char **argv) { lang_name = argv[++i]; } + else if (! strcmp (argv[i], "-r")) + { + r2l = 1; + } else if (argv[i][0] != '-') { fp = fopen (argv[i], "r"); @@ -605,7 +602,13 @@ main (int argc, char **argv) mface_put_prop (face, Mfontset, fontset); mface_put_prop (face, Msize, (void *) (fontsize * dpi / 100)); if (family_name) - mface_put_prop (face, Mfamily, msymbol (family_name)); + { + char *p; + + for (p = family_name; *p; p++) + if (isupper (*p)) *p = tolower (*p); + mface_put_prop (face, Mfamily, msymbol (family_name)); + } p = mplist_add (plist, Mdevice, msymbol ("gd")); p = mplist_add (p, Mface, face); @@ -613,14 +616,14 @@ main (int argc, char **argv) frame = mframe (plist); m17n_object_unref (plist); if (! frame) - FATAL_ERROR ("%s\n", "Can't open a frame (perhaps no font avairable)!"); + FATAL_ERROR ("%s\n", "Can't open a frame (perhaps no font available)!"); } memset (&control, 0, sizeof control); - control.as_image = 1; control.two_dimensional = 1; control.enable_bidi = 1; control.anti_alias = anti_alias; + control.orientation_reversed = r2l; if (cursor_pos >= 0) { control.with_cursor = 1; @@ -667,9 +670,14 @@ main (int argc, char **argv) gdImageFilledRectangle (image, 0, 0, paper_width - 1, paper_height - 1, white); - mdraw_text_with_control (frame, image, - margin, margin - rect.y, mt, from, to, - &control); + if (! r2l) + mdraw_text_with_control (frame, image, + margin, margin - rect.y, + mt, from, to, &control); + else + mdraw_text_with_control (frame, image, + paper_width - margin, margin - rect.y, + mt, from, to, &control); dump_image (image, filename, filter, ((from > 0 || to < len) ? page_index : 0), quiet_mode);