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);