- New upstream release.
- Remove patches merged and unnecessary anymore: - paps-makefile.patch - paps-formfeed.patch - paps-0.6.6-encoding.patch - paps-typo-font-scale.patch - paps-0.6.6-segfault.patch - paps-0.6.6-font-option.patch - paps-0.6.6-lcctype.patch - paps-0.6.8-shared.patch: Enable building shared library. - paps-0.6.8-wordwrap.patch: Update a bit to get it working without an wordwrap mode. - Add paps-libs and paps-devel package. - paps-cups.patch: Update. - paps-cpilpi.patch: Update. - Fix the wrong rendering with CPI option. (#237202) - Fix the unnecessary rotation with the landscape option when paps is running as CUPS filter. (#222137)
This commit is contained in:
parent
48f32acf62
commit
1a8b5cd74a
@ -1,644 +0,0 @@
|
|||||||
diff -ruN paps-0.6.6.orig/src/libpaps.c paps-0.6.6/src/libpaps.c
|
|
||||||
--- paps-0.6.6.orig/src/libpaps.c 2006-04-27 04:09:03.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/libpaps.c 2006-07-17 13:33:13.000000000 +0900
|
|
||||||
@@ -52,16 +52,20 @@
|
|
||||||
int last_char_idx;
|
|
||||||
double last_pos_y;
|
|
||||||
double last_pos_x;
|
|
||||||
+ double scale_x;
|
|
||||||
+ double scale_y;
|
|
||||||
} paps_private_t;
|
|
||||||
|
|
||||||
|
|
||||||
// Forward declarations
|
|
||||||
-static void add_postscript_prologue(GString *ps_string);
|
|
||||||
+static void add_postscript_prologue(paps_private_t *paps);
|
|
||||||
static gchar *get_next_char_id_strdup(paps_private_t *paps);
|
|
||||||
static void add_line_to_postscript(paps_private_t *paps,
|
|
||||||
GString *line_str,
|
|
||||||
double x_pos,
|
|
||||||
double y_pos,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayoutLine *line);
|
|
||||||
|
|
||||||
paps_t *paps_new()
|
|
||||||
@@ -76,12 +80,27 @@
|
|
||||||
paps->last_pos_x = -1e67;
|
|
||||||
paps->last_pos_y = -1e67;
|
|
||||||
paps->last_char_idx = 0;
|
|
||||||
+ paps->scale_x = 1.0;
|
|
||||||
+ paps->scale_y = 1.0;
|
|
||||||
|
|
||||||
- add_postscript_prologue(paps->header);
|
|
||||||
+ add_postscript_prologue(paps);
|
|
||||||
|
|
||||||
return paps;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+paps_set_scale(paps_t *paps_,
|
|
||||||
+ gdouble scale_x,
|
|
||||||
+ gdouble scale_y)
|
|
||||||
+{
|
|
||||||
+ paps_private_t *paps = (paps_private_t *)paps_;
|
|
||||||
+
|
|
||||||
+ paps->scale_x = scale_x;
|
|
||||||
+ paps->scale_y = scale_y;
|
|
||||||
+ g_string_erase(paps->header, 0, -1);
|
|
||||||
+ add_postscript_prologue(paps);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
PangoContext *paps_get_pango_context()
|
|
||||||
{
|
|
||||||
return pango_ft2_get_context (PAPS_DPI, PAPS_DPI);
|
|
||||||
@@ -124,14 +143,18 @@
|
|
||||||
GString *line_str,
|
|
||||||
PangoLayoutLine *pango_line,
|
|
||||||
double line_start_pos_x,
|
|
||||||
- double line_start_pos_y
|
|
||||||
+ double line_start_pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y
|
|
||||||
);
|
|
||||||
void draw_bezier_outline(paps_private_t *paps,
|
|
||||||
GString *layout_str,
|
|
||||||
FT_Face face,
|
|
||||||
PangoGlyphInfo *glyph_info,
|
|
||||||
double pos_x,
|
|
||||||
- double pos_y
|
|
||||||
+ double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y
|
|
||||||
);
|
|
||||||
/* Countour traveling functions */
|
|
||||||
static int paps_ps_move_to( FT_Vector* to,
|
|
||||||
@@ -166,6 +189,8 @@
|
|
||||||
gchar *paps_layout_to_postscript_strdup(paps_t *paps_,
|
|
||||||
double pos_x,
|
|
||||||
double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayout *layout)
|
|
||||||
{
|
|
||||||
paps_private_t *paps = (paps_private_t*)paps_;
|
|
||||||
@@ -189,6 +214,8 @@
|
|
||||||
layout_str,
|
|
||||||
pos_x,
|
|
||||||
pos_y,
|
|
||||||
+ scale_x,
|
|
||||||
+ scale_y,
|
|
||||||
pango_line);
|
|
||||||
|
|
||||||
pos_y -= logical_rect.height * scale;
|
|
||||||
@@ -203,6 +230,8 @@
|
|
||||||
gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
|
|
||||||
double pos_x,
|
|
||||||
double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayoutLine *layout_line)
|
|
||||||
{
|
|
||||||
paps_private_t *paps = (paps_private_t*)paps_;
|
|
||||||
@@ -213,6 +242,8 @@
|
|
||||||
layout_str,
|
|
||||||
pos_x,
|
|
||||||
pos_y,
|
|
||||||
+ scale_x,
|
|
||||||
+ scale_y,
|
|
||||||
layout_line);
|
|
||||||
|
|
||||||
ret_str = layout_str->str;
|
|
||||||
@@ -221,9 +252,10 @@
|
|
||||||
return ret_str;
|
|
||||||
}
|
|
||||||
|
|
||||||
-void add_postscript_prologue(GString *ps_string)
|
|
||||||
+static void
|
|
||||||
+add_postscript_prologue(paps_private_t *paps)
|
|
||||||
{
|
|
||||||
- g_string_append_printf(ps_string,
|
|
||||||
+ g_string_append_printf(paps->header,
|
|
||||||
"%%%%BeginProlog\n"
|
|
||||||
"/papsdict 1 dict def\n"
|
|
||||||
"papsdict begin\n"
|
|
||||||
@@ -231,7 +263,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Outline support */
|
|
||||||
- g_string_append_printf(ps_string,
|
|
||||||
+ g_string_append_printf(paps->header,
|
|
||||||
"/conicto {\n"
|
|
||||||
" /to_y exch def\n"
|
|
||||||
" /to_x exch def\n"
|
|
||||||
@@ -249,7 +281,7 @@
|
|
||||||
"/start_ol { gsave } bind def\n"
|
|
||||||
"/end_ol { closepath fill grestore } bind def\n"
|
|
||||||
/* Specify both x and y. */
|
|
||||||
- "/draw_char { fontdict begin gsave %f dup scale last_x last_y translate load exec end grestore} def\n"
|
|
||||||
+ "/draw_char { fontdict begin gsave %f dup scale last_x last_y translate %f %f scale load exec end grestore} def\n"
|
|
||||||
"/goto_xy { fontdict begin /last_y exch def /last_x exch def end } def\n"
|
|
||||||
"/goto_x { fontdict begin /last_x exch def end } def\n"
|
|
||||||
"/fwd_x { fontdict begin /last_x exch last_x add def end } def\n"
|
|
||||||
@@ -261,14 +293,15 @@
|
|
||||||
// The scaling is a combination of the scaling due
|
|
||||||
// to the dpi and the difference in the coordinate
|
|
||||||
// systems of postscript and freetype2.
|
|
||||||
- 1.0 / PAPS_DPI
|
|
||||||
+ 1.0 / PAPS_DPI,
|
|
||||||
+ paps->scale_x, paps->scale_y
|
|
||||||
);
|
|
||||||
|
|
||||||
// The following is a dispatcher for an encoded string that contains
|
|
||||||
// a packed version of the pango layout data. Currently it just executes
|
|
||||||
// the symbols corresponding to the encoded characters, but in the future
|
|
||||||
// it will also contain some meta data, e.g. the size of the layout.
|
|
||||||
- g_string_append_printf(ps_string,
|
|
||||||
+ g_string_append_printf(paps->header,
|
|
||||||
"/paps_exec {\n"
|
|
||||||
" 1 dict begin\n"
|
|
||||||
" /ps exch def\n"
|
|
||||||
@@ -320,7 +353,7 @@
|
|
||||||
);
|
|
||||||
|
|
||||||
/* Open up dictionaries */
|
|
||||||
- g_string_append(ps_string,
|
|
||||||
+ g_string_append(paps->header,
|
|
||||||
"/fontdict 1 dict def\n"
|
|
||||||
"papsdict begin fontdict begin\n");
|
|
||||||
}
|
|
||||||
@@ -331,6 +364,8 @@
|
|
||||||
GString *line_str,
|
|
||||||
double x_pos,
|
|
||||||
double y_pos,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayoutLine *line)
|
|
||||||
{
|
|
||||||
PangoRectangle ink_rect, logical_rect;
|
|
||||||
@@ -349,7 +384,7 @@
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- draw_contour(paps, line_str, line, x_pos, y_pos);
|
|
||||||
+ draw_contour(paps, line_str, line, x_pos, y_pos, scale_x, scale_y);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* draw_contour() draws all of the contours that make up a line.
|
|
||||||
@@ -359,7 +394,9 @@
|
|
||||||
GString *layout_str,
|
|
||||||
PangoLayoutLine *pango_line,
|
|
||||||
double line_start_pos_x,
|
|
||||||
- double line_start_pos_y
|
|
||||||
+ double line_start_pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y
|
|
||||||
)
|
|
||||||
{
|
|
||||||
GSList *runs_list;
|
|
||||||
@@ -389,7 +426,7 @@
|
|
||||||
glyph_pos_x = x_pos + 1.0*geometry.x_offset * scale;
|
|
||||||
glyph_pos_y = line_start_pos_y - 1.0*geometry.y_offset * scale;
|
|
||||||
|
|
||||||
- x_pos += geometry.width * scale;
|
|
||||||
+ x_pos += geometry.width * scale * scale_x;
|
|
||||||
|
|
||||||
if (glyphs->glyphs[glyph_idx].glyph == PANGO_GLYPH_EMPTY)
|
|
||||||
continue;
|
|
||||||
@@ -399,7 +436,9 @@
|
|
||||||
ft_face,
|
|
||||||
&glyphs->glyphs[glyph_idx],
|
|
||||||
glyph_pos_x,
|
|
||||||
- glyph_pos_y
|
|
||||||
+ glyph_pos_y,
|
|
||||||
+ scale_x,
|
|
||||||
+ scale_y
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -415,13 +454,15 @@
|
|
||||||
FT_Face face,
|
|
||||||
PangoGlyphInfo *glyph_info,
|
|
||||||
double pos_x,
|
|
||||||
- double pos_y
|
|
||||||
+ double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y
|
|
||||||
)
|
|
||||||
{
|
|
||||||
static gchar glyph_hash_string[100];
|
|
||||||
double scale = 72.0 / PANGO_SCALE / PAPS_DPI;
|
|
||||||
double epsilon = 1e-2;
|
|
||||||
- double glyph_width = glyph_info->geometry.width * scale;
|
|
||||||
+ double glyph_width = glyph_info->geometry.width * scale * scale_x;
|
|
||||||
gchar *id = NULL;
|
|
||||||
|
|
||||||
/* Output outline */
|
|
||||||
@@ -480,7 +521,7 @@
|
|
||||||
g_string_append_printf(glyph_def_string,
|
|
||||||
"%.0f fwd_x\n"
|
|
||||||
"end_ol\n",
|
|
||||||
- glyph_info->geometry.width * scale * PAPS_DPI
|
|
||||||
+ glyph_info->geometry.width * scale * scale_x * PAPS_DPI
|
|
||||||
);
|
|
||||||
|
|
||||||
// TBD - Check if the glyph_def_string is empty. If so, set the
|
|
||||||
diff -ruN paps-0.6.6.orig/src/libpaps.h paps-0.6.6/src/libpaps.h
|
|
||||||
--- paps-0.6.6.orig/src/libpaps.h 2005-12-21 04:35:39.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/libpaps.h 2006-07-17 13:27:59.000000000 +0900
|
|
||||||
@@ -40,6 +40,19 @@
|
|
||||||
*/
|
|
||||||
void paps_free(paps_t *paps);
|
|
||||||
|
|
||||||
+/**
|
|
||||||
+ * Set the scales for characters.
|
|
||||||
+ *
|
|
||||||
+ * @param paps Paps object
|
|
||||||
+ * @param scale_x x-coordinate scale
|
|
||||||
+ * @param scale_y y-coordinate scale
|
|
||||||
+ *
|
|
||||||
+ */
|
|
||||||
+void
|
|
||||||
+paps_set_scale(paps_t *paps,
|
|
||||||
+ gdouble scale_x,
|
|
||||||
+ gdouble scale_y);
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* libpaps may currently be used only with a PangoContext that it
|
|
||||||
* is creating. The context returned may of course be changed though
|
|
||||||
@@ -78,6 +91,8 @@
|
|
||||||
gchar *paps_layout_to_postscript_strdup(paps_t *paps,
|
|
||||||
double pos_x,
|
|
||||||
double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayout *layout);
|
|
||||||
/**
|
|
||||||
* Create postscript related to a single PangoLayout line at position
|
|
||||||
@@ -95,6 +110,8 @@
|
|
||||||
gchar *paps_layout_line_to_postscript_strdup(paps_t *paps_,
|
|
||||||
double pos_x,
|
|
||||||
double pos_y,
|
|
||||||
+ double scale_x,
|
|
||||||
+ double scale_y,
|
|
||||||
PangoLayoutLine *layout_line);
|
|
||||||
|
|
||||||
/**
|
|
||||||
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-07-17 13:27:27.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-07-17 13:27:59.000000000 +0900
|
|
||||||
@@ -22,6 +22,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
#include <pango/pango.h>
|
|
||||||
+#include <pango/pangoft2.h>
|
|
||||||
#include "libpaps.h"
|
|
||||||
#include <errno.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
@@ -29,6 +30,7 @@
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <locale.h>
|
|
||||||
+#include <wchar.h>
|
|
||||||
|
|
||||||
#define BUFSIZE 1024
|
|
||||||
#define DEFAULT_FONT_FAMILY "Monospace"
|
|
||||||
@@ -71,6 +73,8 @@
|
|
||||||
int header_sep;
|
|
||||||
int header_height;
|
|
||||||
int footer_height;
|
|
||||||
+ gdouble scale_x;
|
|
||||||
+ gdouble scale_y;
|
|
||||||
gboolean do_draw_header;
|
|
||||||
gboolean do_draw_footer;
|
|
||||||
gboolean do_duplex;
|
|
||||||
@@ -110,7 +114,8 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Information passed in user data when drawing outlines */
|
|
||||||
-GList *split_paragraphs_into_lines (GList *paragraphs);
|
|
||||||
+GList *split_paragraphs_into_lines (page_layout_t *page_layout,
|
|
||||||
+ GList *paragraphs);
|
|
||||||
static char *read_file (FILE *file,
|
|
||||||
GIConv handle);
|
|
||||||
static GList *split_text_into_paragraphs (PangoContext *pango_context,
|
|
||||||
@@ -136,6 +141,8 @@
|
|
||||||
static void draw_line_to_page (FILE *OUT,
|
|
||||||
int column_idx,
|
|
||||||
int column_pos,
|
|
||||||
+ gdouble scale_x,
|
|
||||||
+ gdouble scale_y,
|
|
||||||
page_layout_t *page_layout,
|
|
||||||
PangoLayoutLine *line);
|
|
||||||
static int draw_page_header_line_to_page(FILE *OUT,
|
|
||||||
@@ -158,6 +165,7 @@
|
|
||||||
double last_pos_x = -1;
|
|
||||||
paps_t *paps;
|
|
||||||
paper_type_t paper_type = PAPER_TYPE_A4;
|
|
||||||
+gdouble lpi = 0.0L, cpi = 0.0L;
|
|
||||||
|
|
||||||
#define CASE(s) if (strcmp(S_, s) == 0)
|
|
||||||
|
|
||||||
@@ -190,6 +198,60 @@
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static gboolean
|
|
||||||
+_paps_arg_lpi_cb(const gchar *option_name,
|
|
||||||
+ const gchar *value,
|
|
||||||
+ gpointer data)
|
|
||||||
+{
|
|
||||||
+ gboolean retval = TRUE;
|
|
||||||
+ gchar *p = NULL;
|
|
||||||
+
|
|
||||||
+ if (value && *value)
|
|
||||||
+ {
|
|
||||||
+ errno = 0;
|
|
||||||
+ lpi = g_strtod(value, &p);
|
|
||||||
+ if ((p && *p) || errno == ERANGE)
|
|
||||||
+ {
|
|
||||||
+ fprintf(stderr, "given LPI value was invalid.\n");
|
|
||||||
+ retval = FALSE;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ fprintf(stderr, "You must specify the amount of lines per inch.\n");
|
|
||||||
+ retval = FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return retval;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static gboolean
|
|
||||||
+_paps_arg_cpi_cb(const gchar *option_name,
|
|
||||||
+ const gchar *value,
|
|
||||||
+ gpointer data)
|
|
||||||
+{
|
|
||||||
+ gboolean retval = TRUE;
|
|
||||||
+ gchar *p = NULL;
|
|
||||||
+
|
|
||||||
+ if (value && *value)
|
|
||||||
+ {
|
|
||||||
+ errno = 0;
|
|
||||||
+ cpi = g_strtod(value, &p);
|
|
||||||
+ if ((p && *p) || errno == ERANGE)
|
|
||||||
+ {
|
|
||||||
+ fprintf(stderr, "given CPI value was invalid.\n");
|
|
||||||
+ retval = FALSE;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ fprintf(stderr, "You must specify the amount of characters per inch.\n");
|
|
||||||
+ retval = FALSE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return retval;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static PangoLanguage *
|
|
||||||
get_language(void)
|
|
||||||
{
|
|
||||||
@@ -233,6 +295,8 @@
|
|
||||||
{"left-margin", 0, 0, G_OPTION_ARG_INT, &left_margin, "Set left margin. (Default: 36)", "NUM"},
|
|
||||||
{"header", 0, 0, G_OPTION_ARG_NONE, &do_draw_header, "Draw page header for each page.", NULL},
|
|
||||||
{"encoding", 0, 0, G_OPTION_ARG_STRING, &encoding, "Assume the documentation encoding.", "ENCODING"},
|
|
||||||
+ {"lpi", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_lpi_cb, "Set the amount of lines per inch.", "REAL"},
|
|
||||||
+ {"cpi", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_cpi_cb, "Set the amount of characters per inch.", "REAL"},
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
GError *error = NULL;
|
|
||||||
@@ -243,6 +307,9 @@
|
|
||||||
PangoContext *pango_context;
|
|
||||||
PangoFontDescription *font_description;
|
|
||||||
PangoDirection pango_dir = PANGO_DIRECTION_LTR;
|
|
||||||
+ PangoFontMap *fontmap;
|
|
||||||
+ PangoFontset *fontset;
|
|
||||||
+ PangoFontMetrics *metrics;
|
|
||||||
int num_pages = 1;
|
|
||||||
int gutter_width = 40;
|
|
||||||
int total_gutter_width;
|
|
||||||
@@ -254,6 +321,7 @@
|
|
||||||
gchar *header_font_desc = MAKE_FONT_NAME (HEADER_FONT_FAMILY, HEADER_FONT_SCALE);
|
|
||||||
gchar *filename_in, *title, *text;
|
|
||||||
int header_sep = 20;
|
|
||||||
+ int max_width = 0, w;
|
|
||||||
GIConv cvh = NULL;
|
|
||||||
|
|
||||||
/* Prerequisite when using glib. */
|
|
||||||
@@ -343,6 +411,8 @@
|
|
||||||
page_layout.header_height = 0;
|
|
||||||
page_layout.footer_height = 0;
|
|
||||||
page_layout.do_wordwrap = do_wordwrap;
|
|
||||||
+ page_layout.scale_x = 1.0L;
|
|
||||||
+ page_layout.scale_y = 1.0L;
|
|
||||||
if (do_draw_header)
|
|
||||||
page_layout.header_sep = header_sep;
|
|
||||||
else
|
|
||||||
@@ -365,7 +435,22 @@
|
|
||||||
page_layout.pango_dir = pango_dir;
|
|
||||||
page_layout.filename = filename_in;
|
|
||||||
page_layout.header_font_desc = header_font_desc;
|
|
||||||
-
|
|
||||||
+
|
|
||||||
+ /* calculate x-coordinate scale */
|
|
||||||
+ if (cpi > 0.0L)
|
|
||||||
+ {
|
|
||||||
+ fontmap = pango_ft2_font_map_new ();
|
|
||||||
+ fontset = pango_font_map_load_fontset (fontmap, pango_context, font_description, get_language ());
|
|
||||||
+ metrics = pango_fontset_get_metrics (fontset);
|
|
||||||
+ max_width = pango_font_metrics_get_approximate_char_width (metrics);
|
|
||||||
+ w = pango_font_metrics_get_approximate_digit_width (metrics);
|
|
||||||
+ if (w > max_width)
|
|
||||||
+ max_width = w;
|
|
||||||
+ page_layout.scale_x = 1 / cpi * 72.0 * PANGO_SCALE / max_width;
|
|
||||||
+ pango_font_metrics_unref (metrics);
|
|
||||||
+ g_object_unref (G_OBJECT (fontmap));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (encoding != NULL)
|
|
||||||
{
|
|
||||||
cvh = g_iconv_open ("UTF-8", encoding);
|
|
||||||
@@ -385,11 +470,12 @@
|
|
||||||
&page_layout,
|
|
||||||
page_layout.column_width * page_layout.pt_to_pixel,
|
|
||||||
text);
|
|
||||||
- pango_lines = split_paragraphs_into_lines(paragraphs);
|
|
||||||
+ pango_lines = split_paragraphs_into_lines(&page_layout, paragraphs);
|
|
||||||
|
|
||||||
if (OUT == NULL)
|
|
||||||
OUT = stdout;
|
|
||||||
|
|
||||||
+ paps_set_scale(paps, page_layout.scale_x, page_layout.scale_y);
|
|
||||||
print_postscript_header(OUT, title, &page_layout);
|
|
||||||
ps_pages_string = g_string_new("");
|
|
||||||
|
|
||||||
@@ -493,6 +579,58 @@
|
|
||||||
para->text = last_para;
|
|
||||||
para->length = p - last_para;
|
|
||||||
para->layout = pango_layout_new (pango_context);
|
|
||||||
+
|
|
||||||
+ if (cpi > 0.0L && page_layout->do_wordwrap)
|
|
||||||
+ {
|
|
||||||
+ PangoRectangle ink_rect, logical_rect;
|
|
||||||
+ wchar_t *wtext, *wnewtext;
|
|
||||||
+ gchar *newtext;
|
|
||||||
+ size_t i, len, wwidth = 0, n;
|
|
||||||
+
|
|
||||||
+ wtext = (wchar_t *)g_utf8_to_ucs4 (para->text, para->length, NULL, NULL, NULL);
|
|
||||||
+ if (wtext == NULL)
|
|
||||||
+ {
|
|
||||||
+ fprintf (stderr, "Failed to convert UTF-8 to UCS-4.\n");
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ len = wcswidth (wtext);
|
|
||||||
+ /* the amount of characters to be able to put on the line against CPI */
|
|
||||||
+ n = page_layout->column_width / 72.0 * cpi;
|
|
||||||
+ if (len > n)
|
|
||||||
+ {
|
|
||||||
+ wnewtext = g_new (wchar_t, wcslen (wtext) + 1);
|
|
||||||
+ if (wnewtext == NULL)
|
|
||||||
+ {
|
|
||||||
+ fprintf (stderr, "Failed to allocate a memory.\n");
|
|
||||||
+ g_free (wtext);
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ for (i = 0; i < len; i++)
|
|
||||||
+ {
|
|
||||||
+ wwidth += wcwidth (wtext[i]);
|
|
||||||
+ if (wwidth > n)
|
|
||||||
+ break;
|
|
||||||
+ wnewtext[i] = wtext[i];
|
|
||||||
+ }
|
|
||||||
+ wnewtext[i] = 0L;
|
|
||||||
+
|
|
||||||
+ newtext = g_ucs4_to_utf8 ((const gunichar *)wnewtext, i, NULL, NULL, NULL);
|
|
||||||
+ if (newtext == NULL)
|
|
||||||
+ {
|
|
||||||
+ fprintf (stderr, "Failed to convert UCS-4 to UTF-8.\n");
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ pango_layout_set_text (para->layout, newtext, -1);
|
|
||||||
+ pango_layout_get_extents (para->layout, &ink_rect, &logical_rect);
|
|
||||||
+ /* update paint_width to wrap_against CPI */
|
|
||||||
+ paint_width = logical_rect.width / PANGO_SCALE;
|
|
||||||
+ g_free (newtext);
|
|
||||||
+ g_free (wnewtext);
|
|
||||||
+ }
|
|
||||||
+ g_free (wtext);
|
|
||||||
+ }
|
|
||||||
pango_layout_set_text (para->layout, para->text, para->length);
|
|
||||||
pango_layout_set_justify (para->layout, page_layout->do_justify);
|
|
||||||
pango_layout_set_alignment (para->layout,
|
|
||||||
@@ -523,9 +661,11 @@
|
|
||||||
/* Split a list of paragraphs into a list of lines.
|
|
||||||
*/
|
|
||||||
GList *
|
|
||||||
-split_paragraphs_into_lines(GList *paragraphs)
|
|
||||||
+split_paragraphs_into_lines(page_layout_t *page_layout,
|
|
||||||
+ GList *paragraphs)
|
|
||||||
{
|
|
||||||
GList *line_list = NULL;
|
|
||||||
+ int max_height = 0;
|
|
||||||
/* Read the file */
|
|
||||||
|
|
||||||
/* Now split all the pagraphs into lines */
|
|
||||||
@@ -554,10 +694,14 @@
|
|
||||||
line_link->formfeed = 1;
|
|
||||||
line_link->ink_rect = ink_rect;
|
|
||||||
line_list = g_list_prepend(line_list, line_link);
|
|
||||||
+ if (logical_rect.height > max_height)
|
|
||||||
+ max_height = logical_rect.height;
|
|
||||||
}
|
|
||||||
|
|
||||||
par_list = par_list->next;
|
|
||||||
}
|
|
||||||
+ if (lpi > 0.0L)
|
|
||||||
+ page_layout->scale_y = 1 / lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE / max_height;
|
|
||||||
|
|
||||||
return g_list_reverse(line_list);
|
|
||||||
|
|
||||||
@@ -612,9 +756,14 @@
|
|
||||||
draw_line_to_page(OUT,
|
|
||||||
column_idx,
|
|
||||||
column_y_pos+line_link->logical_rect.height,
|
|
||||||
+ page_layout->scale_x, page_layout->scale_y,
|
|
||||||
page_layout,
|
|
||||||
line);
|
|
||||||
- column_y_pos += line_link->logical_rect.height;
|
|
||||||
+
|
|
||||||
+ if (lpi > 0.0L)
|
|
||||||
+ column_y_pos += (1 / lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
|
|
||||||
+ else
|
|
||||||
+ column_y_pos += line_link->logical_rect.height;
|
|
||||||
|
|
||||||
pango_lines = pango_lines->next;
|
|
||||||
}
|
|
||||||
@@ -840,6 +989,8 @@
|
|
||||||
draw_line_to_page(FILE *OUT,
|
|
||||||
int column_idx,
|
|
||||||
int column_pos,
|
|
||||||
+ gdouble scale_x,
|
|
||||||
+ gdouble scale_y,
|
|
||||||
page_layout_t *page_layout,
|
|
||||||
PangoLayoutLine *line)
|
|
||||||
{
|
|
||||||
@@ -874,6 +1025,7 @@
|
|
||||||
|
|
||||||
ps_layout = paps_layout_line_to_postscript_strdup(paps,
|
|
||||||
x_pos, y_pos,
|
|
||||||
+ scale_x, scale_y,
|
|
||||||
line);
|
|
||||||
|
|
||||||
g_string_append(ps_pages_string,
|
|
||||||
@@ -935,6 +1087,7 @@
|
|
||||||
}
|
|
||||||
ps_layout = paps_layout_line_to_postscript_strdup(paps,
|
|
||||||
x_pos, y_pos,
|
|
||||||
+ page_layout->scale_x, page_layout->scale_y,
|
|
||||||
line);
|
|
||||||
g_string_append(ps_pages_string,
|
|
||||||
ps_layout);
|
|
||||||
@@ -948,6 +1101,7 @@
|
|
||||||
x_pos = (page_layout->page_width - (logical_rect.width / PANGO_SCALE * page_layout->pixel_to_pt)) / 2;
|
|
||||||
ps_layout = paps_layout_line_to_postscript_strdup(paps,
|
|
||||||
x_pos, y_pos,
|
|
||||||
+ page_layout->scale_x, page_layout->scale_y,
|
|
||||||
line);
|
|
||||||
g_string_append(ps_pages_string,
|
|
||||||
ps_layout);
|
|
||||||
@@ -961,6 +1115,7 @@
|
|
||||||
x_pos = page_layout->page_width - page_layout->right_margin - (logical_rect.width / PANGO_SCALE * page_layout->pixel_to_pt);
|
|
||||||
ps_layout = paps_layout_line_to_postscript_strdup(paps,
|
|
||||||
x_pos, y_pos,
|
|
||||||
+ page_layout->scale_x, page_layout->scale_y,
|
|
||||||
line);
|
|
||||||
g_string_append(ps_pages_string,
|
|
||||||
ps_layout);
|
|
||||||
@@ -977,4 +1132,3 @@
|
|
||||||
|
|
||||||
return logical_rect.height;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
diff -ruN paps-0.6.6.orig/src/test_libpaps.c paps-0.6.6/src/test_libpaps.c
|
|
||||||
--- paps-0.6.6.orig/src/test_libpaps.c 2005-12-21 04:35:39.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/test_libpaps.c 2006-07-17 13:27:59.000000000 +0900
|
|
||||||
@@ -83,6 +83,7 @@
|
|
||||||
|
|
||||||
ps_layout = paps_layout_to_postscript_strdup(paps,
|
|
||||||
0, 0,
|
|
||||||
+ 1.0, 1.0,
|
|
||||||
layout);
|
|
||||||
g_string_append_printf(ps_text,
|
|
||||||
"gsave\n"
|
|
||||||
@@ -110,6 +111,7 @@
|
|
||||||
);
|
|
||||||
ps_layout = paps_layout_to_postscript_strdup(paps,
|
|
||||||
0, 0,
|
|
||||||
+ 1.0, 1.0,
|
|
||||||
layout);
|
|
||||||
g_string_append_printf(ps_text,
|
|
||||||
"gsave\n"
|
|
@ -1,104 +0,0 @@
|
|||||||
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-05-25 13:23:07.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-05-25 14:55:03.000000000 +0900
|
|
||||||
@@ -105,7 +105,8 @@
|
|
||||||
|
|
||||||
/* Information passed in user data when drawing outlines */
|
|
||||||
GList *split_paragraphs_into_lines (GList *paragraphs);
|
|
||||||
-static char *read_file (FILE *file);
|
|
||||||
+static char *read_file (FILE *file,
|
|
||||||
+ GIConv handle);
|
|
||||||
static GList *split_text_into_paragraphs (PangoContext *pango_context,
|
|
||||||
page_layout_t *page_layout,
|
|
||||||
int paint_width,
|
|
||||||
@@ -188,7 +189,7 @@
|
|
||||||
gboolean do_landscape = FALSE, do_rtl = FALSE, do_justify = FALSE, do_draw_header = FALSE;
|
|
||||||
int num_columns = 1, font_scale = 12;
|
|
||||||
int top_margin = 36, bottom_margin = 36, right_margin = 36, left_margin = 36;
|
|
||||||
- char *font_family = "Monospace";
|
|
||||||
+ char *font_family = "Monospace", *encoding = NULL;
|
|
||||||
GOptionContext *ctxt = g_option_context_new("[text file]");
|
|
||||||
GOptionEntry entries[] = {
|
|
||||||
{"landscape", 0, 0, G_OPTION_ARG_NONE, &do_landscape, "Landscape output. (Default: portrait)", NULL},
|
|
||||||
@@ -205,6 +206,7 @@
|
|
||||||
{"right-margin", 0, 0, G_OPTION_ARG_INT, &right_margin, "Set right margin. (Default: 36)", "NUM"},
|
|
||||||
{"left-margin", 0, 0, G_OPTION_ARG_INT, &left_margin, "Set left margin. (Default: 36)", "NUM"},
|
|
||||||
{"header", 0, 0, G_OPTION_ARG_NONE, &do_draw_header, "Draw page header for each page.", NULL},
|
|
||||||
+ {"encoding", 0, 0, G_OPTION_ARG_STRING, &encoding, "Assume the documentation encoding.", "ENCODING"},
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
GError *error = NULL;
|
|
||||||
@@ -228,6 +230,7 @@
|
|
||||||
gchar *paps_header = NULL;
|
|
||||||
gchar *header_font_desc = "Monospace Bold 12";
|
|
||||||
int header_sep = 20;
|
|
||||||
+ GIConv cvh = NULL;
|
|
||||||
|
|
||||||
/* Prerequisite when using glib. */
|
|
||||||
g_type_init();
|
|
||||||
@@ -339,7 +342,21 @@
|
|
||||||
page_layout.filename = filename_in;
|
|
||||||
page_layout.header_font_desc = header_font_desc;
|
|
||||||
|
|
||||||
- text = read_file(IN);
|
|
||||||
+ if (encoding != NULL)
|
|
||||||
+ {
|
|
||||||
+ cvh = g_iconv_open ("UTF-8", encoding);
|
|
||||||
+ if (cvh == NULL)
|
|
||||||
+ {
|
|
||||||
+ fprintf(stderr, "%s: Invalid encoding: %s\n", g_get_prgname (), encoding);
|
|
||||||
+ exit(-1);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ text = read_file(IN, cvh);
|
|
||||||
+
|
|
||||||
+ if (encoding != NULL && cvh != NULL)
|
|
||||||
+ g_iconv_close(cvh);
|
|
||||||
+
|
|
||||||
paragraphs = split_text_into_paragraphs(pango_context,
|
|
||||||
&page_layout,
|
|
||||||
page_layout.column_width * page_layout.pt_to_pixel,
|
|
||||||
@@ -373,7 +390,8 @@
|
|
||||||
/* Read an entire file into a string
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
-read_file (FILE *file)
|
|
||||||
+read_file (FILE *file,
|
|
||||||
+ GIConv handle)
|
|
||||||
{
|
|
||||||
GString *inbuf;
|
|
||||||
char *text;
|
|
||||||
@@ -382,7 +400,9 @@
|
|
||||||
inbuf = g_string_new (NULL);
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
- char *bp = fgets (buffer, BUFSIZE-1, file);
|
|
||||||
+ char *ib, *ob, obuffer[BUFSIZE * 6], *bp = fgets (buffer, BUFSIZE-1, file);
|
|
||||||
+ gsize iblen, oblen;
|
|
||||||
+
|
|
||||||
if (ferror (file))
|
|
||||||
{
|
|
||||||
fprintf(stderr, "%s: Error reading file.\n", g_get_prgname ());
|
|
||||||
@@ -392,7 +412,20 @@
|
|
||||||
else if (bp == NULL)
|
|
||||||
break;
|
|
||||||
|
|
||||||
- g_string_append (inbuf, buffer);
|
|
||||||
+ if (handle != NULL)
|
|
||||||
+ {
|
|
||||||
+ ib = bp;
|
|
||||||
+ iblen = strlen (ib);
|
|
||||||
+ ob = bp = obuffer;
|
|
||||||
+ oblen = BUFSIZE * 6 - 1;
|
|
||||||
+ if (g_iconv (handle, &ib, &iblen, &ob, &oblen) == -1)
|
|
||||||
+ {
|
|
||||||
+ fprintf (stderr, "%s: Error while converting strings.\n", g_get_prgname ());
|
|
||||||
+ return NULL;
|
|
||||||
+ }
|
|
||||||
+ obuffer[BUFSIZE * 6 - 1 - oblen] = 0;
|
|
||||||
+ }
|
|
||||||
+ g_string_append (inbuf, bp);
|
|
||||||
}
|
|
||||||
|
|
||||||
fclose (file);
|
|
@ -1,92 +0,0 @@
|
|||||||
--- paps-0.6.6.orig/src/paps.1 2006-06-20 04:09:58.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.1 2006-06-20 04:12:23.000000000 +0900
|
|
||||||
@@ -34,11 +34,8 @@
|
|
||||||
.B \-\-columns=cl
|
|
||||||
Number of columns output. Default is 1.
|
|
||||||
.TP
|
|
||||||
-.B \-\-font\-scale=fs
|
|
||||||
-Font scaling. Default is 12.
|
|
||||||
-.TP
|
|
||||||
-.B \-\-family=f
|
|
||||||
-Pango ft2 font family. Default is Monospace.
|
|
||||||
+.B \-\-font=desc
|
|
||||||
+Set the font description. Default is Monospace 12.
|
|
||||||
.TP
|
|
||||||
.B \-\-rtl
|
|
||||||
Do rtl layout.
|
|
||||||
--- paps-0.6.6/src/paps.c 2006-06-20 04:01:57.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-06-29 15:08:48.000000000 +0100
|
|
||||||
@@ -30,7 +30,11 @@
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#define BUFSIZE 1024
|
|
||||||
-#define HEADER_FONT_SCALE 12
|
|
||||||
+#define DEFAULT_FONT_FAMILY "Monospace"
|
|
||||||
+#define DEFAULT_FONT_SIZE "12"
|
|
||||||
+#define HEADER_FONT_FAMILY "Monospace Bold"
|
|
||||||
+#define HEADER_FONT_SCALE "12"
|
|
||||||
+#define MAKE_FONT_NAME(f,s) f " " s
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
PAPER_TYPE_A4 = 0,
|
|
||||||
@@ -187,15 +191,14 @@
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
gboolean do_landscape = FALSE, do_rtl = FALSE, do_justify = FALSE, do_draw_header = FALSE;
|
|
||||||
- int num_columns = 1, font_scale = 12;
|
|
||||||
+ int num_columns = 1;
|
|
||||||
int top_margin = 36, bottom_margin = 36, right_margin = 36, left_margin = 36;
|
|
||||||
- char *font_family = "Monospace", *encoding = NULL;
|
|
||||||
+ gchar *font = MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE), *encoding = NULL;
|
|
||||||
GOptionContext *ctxt = g_option_context_new("[text file]");
|
|
||||||
GOptionEntry entries[] = {
|
|
||||||
{"landscape", 0, 0, G_OPTION_ARG_NONE, &do_landscape, "Landscape output. (Default: portrait)", NULL},
|
|
||||||
{"columns", 0, 0, G_OPTION_ARG_INT, &num_columns, "Number of columns output. (Default: 1)", "NUM"},
|
|
||||||
- {"font-scale", 0, 0, G_OPTION_ARG_INT, &font_scale, "Font scaling. (Default: 12)", "NUM"},
|
|
||||||
- {"family", 0, 0, G_OPTION_ARG_STRING, &font_family, "Pango FT2 font family. (Default: Monospace)", "FAMILY"},
|
|
||||||
+ {"font", 0, 0, G_OPTION_ARG_STRING, &font, "Set the font description. (Default: Monospace 12)", "DESC"},
|
|
||||||
{"rtl", 0, 0, G_OPTION_ARG_NONE, &do_rtl, "Do rtl layout.", NULL},
|
|
||||||
{"justify", 0, 0, G_OPTION_ARG_NONE, &do_justify, "Do justify the lines.", NULL},
|
|
||||||
{"paper", 0, 0, G_OPTION_ARG_CALLBACK, _paps_arg_paper_cb,
|
|
||||||
@@ -210,11 +213,8 @@
|
|
||||||
{NULL}
|
|
||||||
};
|
|
||||||
GError *error = NULL;
|
|
||||||
- char *filename_in;
|
|
||||||
- char *title;
|
|
||||||
FILE *IN, *OUT = NULL;
|
|
||||||
page_layout_t page_layout;
|
|
||||||
- char *text;
|
|
||||||
GList *paragraphs;
|
|
||||||
GList *pango_lines;
|
|
||||||
PangoContext *pango_context;
|
|
||||||
@@ -228,7 +228,8 @@
|
|
||||||
int do_tumble = -1; /* -1 means not initialized */
|
|
||||||
int do_duplex = -1;
|
|
||||||
gchar *paps_header = NULL;
|
|
||||||
- gchar *header_font_desc = "Monospace Bold 12";
|
|
||||||
+ gchar *header_font_desc = MAKE_FONT_NAME (HEADER_FONT_FAMILY, HEADER_FONT_SCALE);
|
|
||||||
+ gchar *filename_in, *title, *text;
|
|
||||||
int header_sep = 20;
|
|
||||||
GIConv cvh = NULL;
|
|
||||||
|
|
||||||
@@ -271,13 +272,12 @@
|
|
||||||
pango_context_set_language (pango_context, pango_language_from_string ("en_US"));
|
|
||||||
pango_context_set_base_dir (pango_context, pango_dir);
|
|
||||||
|
|
||||||
- font_description = pango_font_description_new ();
|
|
||||||
- pango_font_description_set_family (font_description, g_strdup(font_family));
|
|
||||||
- pango_font_description_set_style (font_description, PANGO_STYLE_NORMAL);
|
|
||||||
- pango_font_description_set_variant (font_description, PANGO_VARIANT_NORMAL);
|
|
||||||
- pango_font_description_set_weight (font_description, PANGO_WEIGHT_NORMAL);
|
|
||||||
- pango_font_description_set_stretch (font_description, PANGO_STRETCH_NORMAL);
|
|
||||||
- pango_font_description_set_size (font_description, font_scale * PANGO_SCALE);
|
|
||||||
+ /* create the font description */
|
|
||||||
+ font_description = pango_font_description_from_string (font);
|
|
||||||
+ if ((pango_font_description_get_set_fields (font_description) & PANGO_FONT_MASK_FAMILY) == 0)
|
|
||||||
+ pango_font_description_set_family (font_description, DEFAULT_FONT_FAMILY);
|
|
||||||
+ if ((pango_font_description_get_set_fields (font_description) & PANGO_FONT_MASK_SIZE) == 0)
|
|
||||||
+ pango_font_description_set_size (font_description, atoi(DEFAULT_FONT_SIZE) * PANGO_SCALE);
|
|
||||||
|
|
||||||
pango_context_set_font_description (pango_context, font_description);
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
|||||||
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-06-20 04:17:28.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-06-20 04:24:27.000000000 +0900
|
|
||||||
@@ -28,6 +28,7 @@
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <time.h>
|
|
||||||
+#include <locale.h>
|
|
||||||
|
|
||||||
#define BUFSIZE 1024
|
|
||||||
#define DEFAULT_FONT_FAMILY "Monospace"
|
|
||||||
@@ -188,6 +188,26 @@
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static PangoLanguage *
|
|
||||||
+get_language(void)
|
|
||||||
+{
|
|
||||||
+ PangoLanguage *retval;
|
|
||||||
+ gchar *lang = g_strdup (setlocale (LC_CTYPE, NULL));
|
|
||||||
+ gchar *p;
|
|
||||||
+
|
|
||||||
+ p = strchr (lang, '.');
|
|
||||||
+ if (p)
|
|
||||||
+ *p = 0;
|
|
||||||
+ p = strchr (lang, '@');
|
|
||||||
+ if (p)
|
|
||||||
+ *p = 0;
|
|
||||||
+
|
|
||||||
+ retval = pango_language_from_string (lang);
|
|
||||||
+ g_free (lang);
|
|
||||||
+
|
|
||||||
+ return retval;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
gboolean do_landscape = FALSE, do_rtl = FALSE, do_justify = FALSE, do_draw_header = FALSE;
|
|
||||||
@@ -269,7 +289,7 @@
|
|
||||||
pango_context = paps_get_pango_context (paps);
|
|
||||||
|
|
||||||
/* Setup pango */
|
|
||||||
- pango_context_set_language (pango_context, pango_language_from_string ("en_US"));
|
|
||||||
+ pango_context_set_language (pango_context, get_language ());
|
|
||||||
pango_context_set_base_dir (pango_context, pango_dir);
|
|
||||||
|
|
||||||
/* create the font description */
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-05-25 15:12:02.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-05-25 15:15:58.000000000 +0900
|
|
||||||
@@ -453,7 +453,7 @@
|
|
||||||
GList *result = NULL;
|
|
||||||
char *last_para = text;
|
|
||||||
|
|
||||||
- while (*p)
|
|
||||||
+ while (p != NULL && *p)
|
|
||||||
{
|
|
||||||
wc = g_utf8_get_char (p);
|
|
||||||
next = g_utf8_next_char (p);
|
|
@ -1,38 +0,0 @@
|
|||||||
diff -ruN paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-07-04 12:16:49.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-07-04 12:19:20.000000000 +0900
|
|
||||||
@@ -79,6 +79,7 @@
|
|
||||||
gboolean do_justify;
|
|
||||||
gboolean do_separation_line;
|
|
||||||
gboolean do_draw_contour;
|
|
||||||
+ gboolean do_wordwrap;
|
|
||||||
PangoDirection pango_dir;
|
|
||||||
gchar *filename;
|
|
||||||
gchar *header_font_desc;
|
|
||||||
@@ -212,6 +213,7 @@
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
gboolean do_landscape = FALSE, do_rtl = FALSE, do_justify = FALSE, do_draw_header = FALSE;
|
|
||||||
+ gboolean do_wordwrap = TRUE;
|
|
||||||
int num_columns = 1;
|
|
||||||
int top_margin = 36, bottom_margin = 36, right_margin = 36, left_margin = 36;
|
|
||||||
gchar *font = MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE), *encoding = NULL;
|
|
||||||
@@ -340,6 +342,7 @@
|
|
||||||
page_layout.header_ypos = page_layout.top_margin;
|
|
||||||
page_layout.header_height = 0;
|
|
||||||
page_layout.footer_height = 0;
|
|
||||||
+ page_layout.do_wordwrap = do_wordwrap;
|
|
||||||
if (do_draw_header)
|
|
||||||
page_layout.header_sep = header_sep;
|
|
||||||
else
|
|
||||||
@@ -496,6 +499,10 @@
|
|
||||||
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
|
||||||
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
|
||||||
pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
|
||||||
+ if (page_layout->do_wordwrap)
|
|
||||||
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
|
||||||
+ else
|
|
||||||
+ pango_layout_set_width (para->layout, -1);
|
|
||||||
para->height = 0;
|
|
||||||
|
|
||||||
if (wc == '\f')
|
|
35
paps-0.6.8-shared.patch
Normal file
35
paps-0.6.8-shared.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
diff -ruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
|
||||||
|
--- paps-0.6.8.orig/src/Makefile.am 2006-04-17 16:42:08.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/Makefile.am 2007-11-16 11:50:07.000000000 +0900
|
||||||
|
@@ -1,15 +1,15 @@
|
||||||
|
man_MANS = paps.1
|
||||||
|
-lib_LIBRARIES = libpaps.a
|
||||||
|
-libpaps_a_SOURCES = libpaps.c
|
||||||
|
-libpaps_a_inc_HEADERS = libpaps.h
|
||||||
|
-libpaps_a_incdir = $(includedir)
|
||||||
|
+lib_LTLIBRARIES = libpaps.la
|
||||||
|
+libpaps_la_SOURCES = libpaps.c
|
||||||
|
+libpapsinc_HEADERS = libpaps.h
|
||||||
|
+libpapsincdir = $(includedir)
|
||||||
|
|
||||||
|
bin_PROGRAMS = paps
|
||||||
|
paps_CFLAGS = -Wall
|
||||||
|
paps_SOURCES = paps.c
|
||||||
|
-paps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
||||||
|
+paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
paps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
-paps_DEPENDENCIES = $(lib_LIBRARIES)
|
||||||
|
+paps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
|
EXTRA_DIST = test_libpaps.c paps.1
|
||||||
|
|
||||||
|
@@ -21,7 +21,7 @@
|
||||||
|
|
||||||
|
|
||||||
|
test_libpaps_SOURCES = test_libpaps.c
|
||||||
|
-test_libpaps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
||||||
|
+test_libpaps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
|
test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
|
-test_libpaps_DEPENDENCIES = $(lib_LIBRARIES)
|
||||||
|
+test_libpaps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
35
paps-0.6.8-wordwrap.patch
Normal file
35
paps-0.6.8-wordwrap.patch
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2007-04-13 14:04:14.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2007-11-16 12:28:11.000000000 +0900
|
||||||
|
@@ -723,9 +723,12 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
pango_layout_set_alignment (para->layout,
|
||||||
|
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
-
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ if (page_layout->do_wordwrap) {
|
||||||
|
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_width (para->layout, -1);
|
||||||
|
+ }
|
||||||
|
para->height = 0;
|
||||||
|
|
||||||
|
result = g_list_prepend (result, para);
|
||||||
|
@@ -754,9 +757,13 @@ split_text_into_paragraphs (PangoContext
|
||||||
|
pango_layout_set_alignment (para->layout,
|
||||||
|
page_layout->pango_dir == PANGO_DIRECTION_LTR
|
||||||
|
? PANGO_ALIGN_LEFT : PANGO_ALIGN_RIGHT);
|
||||||
|
- pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ if (page_layout->do_wordwrap) {
|
||||||
|
+ pango_layout_set_wrap (para->layout, PANGO_WRAP_WORD_CHAR);
|
||||||
|
+ pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
+ } else {
|
||||||
|
+ pango_layout_set_width (para->layout, -1);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
||||||
|
para->height = 0;
|
||||||
|
|
||||||
|
last_para = next;
|
80
paps-cpilpi.patch
Normal file
80
paps-cpilpi.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
diff -pruN -x .libs -x '*o' -x '*ps' ../paps-0.6.8.orig/src/paps.c ../paps-0.6.8/src/paps.c
|
||||||
|
--- paps-0.6.8.orig/src/paps.c 2007-11-28 16:20:56.000000000 +0900
|
||||||
|
+++ paps-0.6.8/src/paps.c 2007-11-30 17:53:06.000000000 +0900
|
||||||
|
@@ -92,8 +92,8 @@ typedef struct {
|
||||||
|
gchar *filename;
|
||||||
|
gchar *header_font_desc;
|
||||||
|
gchar *owner;
|
||||||
|
- gint lpi;
|
||||||
|
- gint cpi;
|
||||||
|
+ gdouble lpi;
|
||||||
|
+ gdouble cpi;
|
||||||
|
} page_layout_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
@@ -376,6 +376,7 @@ int main(int argc, char *argv[])
|
||||||
|
bottom_margin = 36;
|
||||||
|
page_width = 612;
|
||||||
|
page_height = 792;
|
||||||
|
+ do_stretch_chars = TRUE;
|
||||||
|
|
||||||
|
if (argc < 6 || argc > 7) {
|
||||||
|
fprintf(stderr, "ERROR: %s job-id user title copies options [file]\n", prgname);
|
||||||
|
@@ -596,7 +597,8 @@ int main(int argc, char *argv[])
|
||||||
|
/* calculate x-coordinate scale */
|
||||||
|
if (page_layout.cpi > 0.0L)
|
||||||
|
{
|
||||||
|
- double scale;
|
||||||
|
+ gint font_size;
|
||||||
|
+
|
||||||
|
fontmap = pango_ft2_font_map_new ();
|
||||||
|
fontset = pango_font_map_load_fontset (fontmap, pango_context, font_description, get_language ());
|
||||||
|
metrics = pango_fontset_get_metrics (fontset);
|
||||||
|
@@ -608,13 +610,10 @@ int main(int argc, char *argv[])
|
||||||
|
pango_font_metrics_unref (metrics);
|
||||||
|
g_object_unref (G_OBJECT (fontmap));
|
||||||
|
|
||||||
|
- // Now figure out how to scale the font to get that size
|
||||||
|
- scale = 1 / page_layout.cpi * 72.0 * PANGO_SCALE / max_width;
|
||||||
|
-
|
||||||
|
+ font_size = pango_font_description_get_size (font_description);
|
||||||
|
// update the font size to that width
|
||||||
|
- pango_font_description_set_size (font_description, (int)(atoi(DEFAULT_FONT_SIZE) * PANGO_SCALE * scale));
|
||||||
|
+ pango_font_description_set_size (font_description, font_size * page_layout.scale_x);
|
||||||
|
pango_context_set_font_description (pango_context, font_description);
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
page_layout.scale_x = page_layout.scale_y = 1.0;
|
||||||
|
@@ -1002,6 +1001,7 @@ output_pages(FILE *OUT,
|
||||||
|
int column_y_pos = 0;
|
||||||
|
int page_idx = 1;
|
||||||
|
int pango_column_height = page_layout->column_height * page_layout->pt_to_pixel * PANGO_SCALE;
|
||||||
|
+ int height = 0;
|
||||||
|
LineLink *prev_line_link = NULL;
|
||||||
|
|
||||||
|
start_page(OUT, page_idx);
|
||||||
|
@@ -1039,17 +1039,17 @@ output_pages(FILE *OUT,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ if (page_layout->lpi > 0.0L)
|
||||||
|
+ height = (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
|
||||||
|
+ else
|
||||||
|
+ height = line_link->logical_rect.height;
|
||||||
|
draw_line_to_page(OUT,
|
||||||
|
column_idx,
|
||||||
|
- column_y_pos+line_link->logical_rect.height,
|
||||||
|
+ column_y_pos+height,
|
||||||
|
page_layout,
|
||||||
|
line);
|
||||||
|
|
||||||
|
- if (page_layout->lpi > 0.0L)
|
||||||
|
- column_y_pos += (int)(1.0 / page_layout->lpi * 72.0 * page_layout->pt_to_pixel * PANGO_SCALE);
|
||||||
|
- else
|
||||||
|
- column_y_pos += line_link->logical_rect.height;
|
||||||
|
-
|
||||||
|
+ column_y_pos += height;
|
||||||
|
pango_lines = pango_lines->next;
|
||||||
|
prev_line_link = line_link;
|
||||||
|
}
|
153
paps-cups.patch
153
paps-cups.patch
@ -1,7 +1,7 @@
|
|||||||
diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*' -x configure -x doc -x libtool -x .deps -x .libs -x '*.ps' -x foo -x paps -x 'lib*' -x texttopaps -x '*o' -x '*.cups' -x 'test*' -x 'stamp*' paps-0.6.6.orig/configure.in paps-0.6.6/configure.in
|
diff -pruN paps-0.6.8.orig/configure.in paps-0.6.8/configure.in
|
||||||
--- paps-0.6.6.orig/configure.in 2006-04-28 04:41:36.000000000 +0900
|
--- paps-0.6.8.orig/configure.in 2007-01-19 20:06:10.000000000 +0900
|
||||||
+++ paps-0.6.6/configure.in 2007-02-15 23:34:24.000000000 +0900
|
+++ paps-0.6.8/configure.in 2007-11-30 18:40:32.000000000 +0900
|
||||||
@@ -7,4 +7,17 @@ AC_LANG_C
|
@@ -7,6 +7,19 @@ AC_LANG_C
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AM_PROG_LIBTOOL
|
AM_PROG_LIBTOOL
|
||||||
|
|
||||||
@ -10,55 +10,57 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+dnl ======================================================
|
+dnl ======================================================
|
||||||
+AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
|
+AC_PATH_PROG(CUPS_CONFIG, cups-config, no)
|
||||||
+if test "$CUPS_CONFIG" = "no"; then
|
+if test "$CUPS_CONFIG" = "no"; then
|
||||||
+ AC_MSG_ERROR([Please install cups development packages])
|
+ AC_MSG_ERROR([Please install cups development packages/files])
|
||||||
+fi
|
+fi
|
||||||
+CUPS_CFLAGS=`$CUPS_CONFIG --cflags | sed 's/-O[0-9]*//' | sed 's/-m[^\t]*//g'`
|
+CUPS_CFLAGS=`$CUPS_CONFIG --cflags | sed -e 's/-O[0-9]*//' -e 's/-m[^\t]*//g'`
|
||||||
+CUPS_LIBS=`$CUPS_CONFIG --libs`
|
+CUPS_LIBS=`$CUPS_CONFIG --libs`
|
||||||
+
|
+
|
||||||
+AC_SUBST(CUPS_CFLAGS)
|
+AC_SUBST(CUPS_CFLAGS)
|
||||||
+AC_SUBST(CUPS_LIBS)
|
+AC_SUBST(CUPS_LIBS)
|
||||||
+
|
+
|
||||||
AC_OUTPUT(Makefile src/Makefile doc/Makefile)
|
DX_HTML_FEATURE(ON)
|
||||||
diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*' -x configure -x doc -x libtool -x .deps -x .libs -x '*.ps' -x foo -x paps -x 'lib*' -x texttopaps -x '*o' -x '*.cups' -x 'test*' -x 'stamp*' paps-0.6.6.orig/src/Makefile.am paps-0.6.6/src/Makefile.am
|
DX_CHM_FEATURE(OFF)
|
||||||
--- paps-0.6.6.orig/src/Makefile.am 2007-02-15 22:59:47.000000000 +0900
|
DX_CHI_FEATURE(OFF)
|
||||||
+++ paps-0.6.6/src/Makefile.am 2007-02-15 23:34:24.000000000 +0900
|
diff -pruN paps-0.6.8.orig/src/Makefile.am paps-0.6.8/src/Makefile.am
|
||||||
@@ -5,10 +5,10 @@ libpaps_a_inc_HEADERS = libpaps.h
|
--- paps-0.6.8.orig/src/Makefile.am 2007-11-30 18:40:15.000000000 +0900
|
||||||
libpaps_a_incdir = $(includedir)
|
+++ paps-0.6.8/src/Makefile.am 2007-11-30 18:40:32.000000000 +0900
|
||||||
|
@@ -5,10 +5,10 @@ libpapsinc_HEADERS = libpaps.h
|
||||||
|
libpapsincdir = $(includedir)
|
||||||
|
|
||||||
bin_PROGRAMS = paps
|
bin_PROGRAMS = paps
|
||||||
-paps_CFLAGS = -Wall
|
-paps_CFLAGS = -Wall
|
||||||
+paps_CFLAGS = -Wall $(CUPS_CFLAGS)
|
+paps_CFLAGS = -Wall $(CUPS_CFLAGS)
|
||||||
paps_SOURCES = paps.c
|
paps_SOURCES = paps.c
|
||||||
paps_LDADD = $(noinst_LIBRARIES) $(all_libraries)
|
paps_LDADD = $(lib_LTLIBRARIES) $(all_libraries)
|
||||||
-paps_LDFLAGS = `pkg-config --libs pangoft2`
|
-paps_LDFLAGS = `pkg-config --libs pangoft2`
|
||||||
+paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
|
+paps_LDFLAGS = `pkg-config --libs pangoft2` $(CUPS_LIBS)
|
||||||
paps_DEPENDENCIES = $(noinst_LIBRARIES)
|
paps_DEPENDENCIES = $(lib_LTLIBRARIES)
|
||||||
|
|
||||||
EXTRA_DIST = test_libpaps.c paps.1
|
EXTRA_DIST = test_libpaps.c paps.1
|
||||||
diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*' -x configure -x doc -x libtool -x .deps -x .libs -x '*.ps' -x foo -x paps -x 'lib*' -x texttopaps -x '*o' -x '*.cups' -x 'test*' -x 'stamp*' paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
diff -pruN paps-0.6.8.orig/src/paps.c paps-0.6.8/src/paps.c
|
||||||
--- paps-0.6.6.orig/src/paps.c 2007-02-15 22:59:48.000000000 +0900
|
--- paps-0.6.8.orig/src/paps.c 2007-11-30 18:40:15.000000000 +0900
|
||||||
+++ paps-0.6.6/src/paps.c 2007-03-07 20:58:31.000000000 +0900
|
+++ paps-0.6.8/src/paps.c 2007-11-30 18:47:28.000000000 +0900
|
||||||
@@ -32,6 +32,7 @@
|
@@ -31,6 +31,7 @@
|
||||||
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <wchar.h>
|
|
||||||
+#include <cups/cups.h>
|
+#include <cups/cups.h>
|
||||||
|
|
||||||
#define BUFSIZE 1024
|
#define BUFSIZE 1024
|
||||||
#define DEFAULT_FONT_FAMILY "Monospace"
|
#define DEFAULT_FONT_FAMILY "Monospace"
|
||||||
@@ -85,9 +86,11 @@ typedef struct {
|
@@ -86,9 +87,11 @@ typedef struct {
|
||||||
gboolean do_separation_line;
|
|
||||||
gboolean do_draw_contour;
|
|
||||||
gboolean do_wordwrap;
|
gboolean do_wordwrap;
|
||||||
|
gboolean do_use_markup;
|
||||||
|
gboolean do_stretch_chars;
|
||||||
+ gboolean cups_mode;
|
+ gboolean cups_mode;
|
||||||
PangoDirection pango_dir;
|
PangoDirection pango_dir;
|
||||||
gchar *filename;
|
gchar *filename;
|
||||||
gchar *header_font_desc;
|
gchar *header_font_desc;
|
||||||
+ gchar *owner;
|
+ gchar *owner;
|
||||||
|
gint lpi;
|
||||||
|
gint cpi;
|
||||||
} page_layout_t;
|
} page_layout_t;
|
||||||
|
@@ -320,8 +323,8 @@ int main(int argc, char *argv[])
|
||||||
typedef struct {
|
|
||||||
@@ -314,8 +317,8 @@ int main(int argc, char *argv[])
|
|
||||||
int num_pages = 1;
|
int num_pages = 1;
|
||||||
int gutter_width = 40;
|
int gutter_width = 40;
|
||||||
int total_gutter_width;
|
int total_gutter_width;
|
||||||
@ -69,18 +71,18 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
int do_tumble = -1; /* -1 means not initialized */
|
int do_tumble = -1; /* -1 means not initialized */
|
||||||
int do_duplex = -1;
|
int do_duplex = -1;
|
||||||
gchar *paps_header = NULL;
|
gchar *paps_header = NULL;
|
||||||
@@ -324,6 +327,8 @@ int main(int argc, char *argv[])
|
@@ -331,6 +334,8 @@ int main(int argc, char *argv[])
|
||||||
int header_sep = 20;
|
|
||||||
int max_width = 0, w;
|
int max_width = 0, w;
|
||||||
GIConv cvh = NULL;
|
GIConv cvh = NULL;
|
||||||
|
GOptionGroup *options;
|
||||||
+ gboolean cups_mode = FALSE;
|
+ gboolean cups_mode = FALSE;
|
||||||
+ gchar *page_owner = NULL;
|
+ gchar *page_owner = NULL;
|
||||||
|
|
||||||
/* Set locale from environment. */
|
/* Set locale from environment. */
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
@@ -333,6 +338,128 @@ int main(int argc, char *argv[])
|
@@ -348,6 +353,134 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
g_option_context_add_main_entries(ctxt, entries, NULL);
|
g_option_context_add_main_entries(ctxt, entries, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
+ /* check if the process is being invoked as CUPS filter */
|
+ /* check if the process is being invoked as CUPS filter */
|
||||||
+ G_STMT_START {
|
+ G_STMT_START {
|
||||||
@ -92,13 +94,13 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ const char *val;
|
+ const char *val;
|
||||||
+
|
+
|
||||||
+ if (strncmp(prgname, "texttopaps", 10) == 0 ||
|
+ if (strncmp(prgname, "texttopaps", 10) == 0 ||
|
||||||
+ getenv ("CUPS_SERVER") != NULL) {
|
+ getenv("CUPS_SERVER") != NULL) {
|
||||||
+ g_set_prgname(prgname);
|
+ g_set_prgname(prgname);
|
||||||
+ /* argument format should be job-id user title copies options [file] */
|
+ /* argument format should be job-id user title copies options [file] */
|
||||||
+ cups_mode = TRUE;
|
+ cups_mode = TRUE;
|
||||||
+ /* set default values */
|
+ /* set default values */
|
||||||
+ lpi = 6.0L;
|
+ page_layout.lpi = 6.0L;
|
||||||
+ cpi = 10.0L;
|
+ page_layout.cpi = 10.0L;
|
||||||
+ left_margin = 18;
|
+ left_margin = 18;
|
||||||
+ right_margin = 18;
|
+ right_margin = 18;
|
||||||
+ top_margin = 36;
|
+ top_margin = 36;
|
||||||
@ -115,7 +117,7 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ IN = stdin;
|
+ IN = stdin;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ filename_in = argv[6];
|
+ filename_in = argv[6];
|
||||||
+ if ((IN = fopen(argv[6], "rb")) == NULL) {
|
+ if ((IN = fopen(filename_in, "rb")) == NULL) {
|
||||||
+ fprintf(stderr, "ERROR: unable to open print file -\n");
|
+ fprintf(stderr, "ERROR: unable to open print file -\n");
|
||||||
+ exit(1);
|
+ exit(1);
|
||||||
+ }
|
+ }
|
||||||
@ -147,9 +149,12 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ if (g_ascii_strcasecmp(val, "no") &&
|
+ if (g_ascii_strcasecmp(val, "no") &&
|
||||||
+ g_ascii_strcasecmp(val, "off") &&
|
+ g_ascii_strcasecmp(val, "off") &&
|
||||||
+ g_ascii_strcasecmp(val, "false")) {
|
+ g_ascii_strcasecmp(val, "false")) {
|
||||||
+ /* We don't need to process the documentation for orientation support.
|
+ /* We really need to deal with the landscape orientation because
|
||||||
+ * pstops certainly does. (#222137)
|
+ * pstops doesn't deal with the position where it should appears.
|
||||||
|
+ * However this causes the unnecessary rotation by pstops. so paps
|
||||||
|
+ * will puts the fake Orientation tag and stop rotating in PS.
|
||||||
+ */
|
+ */
|
||||||
|
+ do_landscape = TRUE;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ /* XXX: need to support orientation-requested? */
|
+ /* XXX: need to support orientation-requested? */
|
||||||
@ -172,8 +177,9 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ ppdIsMarked(ppd, "EFDuplex", "DuplexNoTumble") ||
|
+ ppdIsMarked(ppd, "EFDuplex", "DuplexNoTumble") ||
|
||||||
+ ppdIsMarked(ppd, "EFDuplex", "DuplexTumble") ||
|
+ ppdIsMarked(ppd, "EFDuplex", "DuplexTumble") ||
|
||||||
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexNoTumble") ||
|
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexNoTumble") ||
|
||||||
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexTumble"))
|
+ ppdIsMarked(ppd, "KD03Duplex", "DuplexTumble")) {
|
||||||
+ do_duplex = TRUE;
|
+ do_duplex = TRUE;
|
||||||
|
+ }
|
||||||
+ if ((val = cupsGetOption("wrap", num_options, options)) != NULL) {
|
+ if ((val = cupsGetOption("wrap", num_options, options)) != NULL) {
|
||||||
+ do_wordwrap = !g_ascii_strcasecmp(val, "true") ||
|
+ do_wordwrap = !g_ascii_strcasecmp(val, "true") ||
|
||||||
+ !g_ascii_strcasecmp(val, "on") ||
|
+ !g_ascii_strcasecmp(val, "on") ||
|
||||||
@ -183,21 +189,23 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ num_columns = atoi(val);
|
+ num_columns = atoi(val);
|
||||||
+ }
|
+ }
|
||||||
+ if ((val = cupsGetOption("cpi", num_options, options)) != NULL) {
|
+ if ((val = cupsGetOption("cpi", num_options, options)) != NULL) {
|
||||||
+ cpi = atof(val);
|
+ page_layout.cpi = atof(val);
|
||||||
+ }
|
+ }
|
||||||
+ if ((val = cupsGetOption("lpi", num_options, options)) != NULL) {
|
+ if ((val = cupsGetOption("lpi", num_options, options)) != NULL) {
|
||||||
+ lpi = atof(val);
|
+ page_layout.lpi = atof(val);
|
||||||
+ }
|
+ }
|
||||||
+ if (getenv("CHARSET") != NULL) {
|
+ if (getenv("CHARSET") != NULL) {
|
||||||
+ char *charset = getenv("CHARSET");
|
+ char *charset = getenv("CHARSET");
|
||||||
+ /* Map CUPS charset names to real ones.
|
+ /* Map CUPS charset names to real ones.
|
||||||
+ * http://cups.org/newsgroups.php?s9797+gcups.general+v9797+T1
|
+ * http://cups.org/newsgroups.php?s9797+gcups.general+v9797+T1
|
||||||
+ */
|
+ */
|
||||||
+ if (!g_ascii_strcasecmp(charset, "windows-932"))
|
+ if (!g_ascii_strcasecmp(charset, "windows-932")) {
|
||||||
+ charset = "WINDOWS-31J";
|
+ charset = "WINDOWS-31J";
|
||||||
|
+ }
|
||||||
+ if (g_ascii_strcasecmp(charset, "utf-8") &&
|
+ if (g_ascii_strcasecmp(charset, "utf-8") &&
|
||||||
+ g_ascii_strcasecmp(charset, "utf8"))
|
+ g_ascii_strcasecmp(charset, "utf8")) {
|
||||||
+ encoding = g_strdup(charset);
|
+ encoding = g_strdup(charset);
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ } G_STMT_END;
|
+ } G_STMT_END;
|
||||||
@ -207,7 +215,7 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
/* Parse command line */
|
/* Parse command line */
|
||||||
if (!g_option_context_parse(ctxt, &argc, &argv, &error))
|
if (!g_option_context_parse(ctxt, &argc, &argv, &error))
|
||||||
{
|
{
|
||||||
@@ -359,6 +486,8 @@ int main(int argc, char *argv[])
|
@@ -374,6 +507,8 @@ int main(int argc, char *argv[])
|
||||||
IN = stdin;
|
IN = stdin;
|
||||||
}
|
}
|
||||||
title = filename_in;
|
title = filename_in;
|
||||||
@ -216,20 +224,20 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
|
|
||||||
paps = paps_new();
|
paps = paps_new();
|
||||||
pango_context = paps_get_pango_context (paps);
|
pango_context = paps_get_pango_context (paps);
|
||||||
@@ -377,8 +506,10 @@ int main(int argc, char *argv[])
|
@@ -392,8 +527,10 @@ int main(int argc, char *argv[])
|
||||||
pango_context_set_font_description (pango_context, font_description);
|
pango_context_set_font_description (pango_context, font_description);
|
||||||
|
|
||||||
/* Page layout */
|
/* Page layout */
|
||||||
- page_width = paper_sizes[(int)paper_type].width;
|
- page_width = paper_sizes[(int)paper_type].width;
|
||||||
- page_height = paper_sizes[(int)paper_type].height;
|
- page_height = paper_sizes[(int)paper_type].height;
|
||||||
+ if (page_width < 0)
|
+ if (page_width < 0)
|
||||||
+ page_width = paper_sizes[(int)paper_type].width;
|
+ page_width = paper_sizes[(int)paper_type].width;
|
||||||
+ if (page_height < 0)
|
+ if (page_height < 0)
|
||||||
+ page_height = paper_sizes[(int)paper_type].height;
|
+ page_height = paper_sizes[(int)paper_type].height;
|
||||||
|
|
||||||
if (num_columns == 1)
|
if (num_columns == 1)
|
||||||
total_gutter_width = 0;
|
total_gutter_width = 0;
|
||||||
@@ -439,6 +570,8 @@ int main(int argc, char *argv[])
|
@@ -456,6 +593,8 @@ int main(int argc, char *argv[])
|
||||||
page_layout.pango_dir = pango_dir;
|
page_layout.pango_dir = pango_dir;
|
||||||
page_layout.filename = filename_in;
|
page_layout.filename = filename_in;
|
||||||
page_layout.header_font_desc = header_font_desc;
|
page_layout.header_font_desc = header_font_desc;
|
||||||
@ -237,21 +245,21 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
+ page_layout.cups_mode = cups_mode;
|
+ page_layout.cups_mode = cups_mode;
|
||||||
|
|
||||||
/* calculate x-coordinate scale */
|
/* calculate x-coordinate scale */
|
||||||
if (cpi > 0.0L)
|
if (page_layout.cpi > 0.0L)
|
||||||
@@ -584,6 +717,12 @@ split_text_into_paragraphs (PangoContext
|
@@ -756,6 +895,12 @@ split_text_into_paragraphs (PangoContext
|
||||||
if (wc == (gunichar)-1)
|
if (wc == (gunichar)-1)
|
||||||
{
|
{
|
||||||
fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
|
fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
|
||||||
+ if (page_layout->cups_mode)
|
+ if (page_layout->cups_mode)
|
||||||
+ {
|
+ {
|
||||||
+ /* try to continue parsing texts */
|
+ /* try to continue parsing texts */
|
||||||
+ p = next;
|
+ p = next;
|
||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
wc = 0;
|
wc = 0;
|
||||||
}
|
}
|
||||||
if (!*p || !wc || wc == '\n' || wc == '\f')
|
if (!*p || !wc || wc == '\n' || wc == '\f')
|
||||||
@@ -810,6 +949,7 @@ void print_postscript_header(FILE *OUT,
|
@@ -925,6 +1070,7 @@ void print_postscript_header(FILE *OUT,
|
||||||
int orientation = page_layout->page_width > page_layout->page_height;
|
int orientation = page_layout->page_width > page_layout->page_height;
|
||||||
int bb_page_width = page_layout->page_width;
|
int bb_page_width = page_layout->page_width;
|
||||||
int bb_page_height = page_layout->page_height;
|
int bb_page_height = page_layout->page_height;
|
||||||
@ -259,7 +267,7 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
|
|
||||||
/* Keep bounding box non-rotated to make ggv happy */
|
/* Keep bounding box non-rotated to make ggv happy */
|
||||||
if (orientation)
|
if (orientation)
|
||||||
@@ -819,12 +959,20 @@ void print_postscript_header(FILE *OUT,
|
@@ -934,12 +1080,20 @@ void print_postscript_header(FILE *OUT,
|
||||||
bb_page_height = tmp;
|
bb_page_height = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,21 +282,38 @@ diff -pruN -x Makefile -x Makefile.in -x '*.m4' -x autom4te.cache -x 'config.*'
|
|||||||
fprintf(OUT,
|
fprintf(OUT,
|
||||||
"%%!PS-Adobe-3.0\n"
|
"%%!PS-Adobe-3.0\n"
|
||||||
"%%%%Title: %s\n"
|
"%%%%Title: %s\n"
|
||||||
"%%%%Creator: paps version 0.6.3 by Dov Grobgeld\n"
|
"%%%%Creator: paps version 0.6.7 by Dov Grobgeld\n"
|
||||||
"%%%%Pages: (atend)\n"
|
"%%%%Pages: (atend)\n"
|
||||||
- "%%%%BoundingBox: 0 0 %d %d\n"
|
- "%%%%BoundingBox: 0 0 %d %d\n"
|
||||||
+ "%%%%BoundingBox: 0 0 %d %d\n%s"
|
+ "%%%%BoundingBox: 0 0 %d %d\n%s"
|
||||||
"%%%%BeginProlog\n"
|
"%%%%BeginProlog\n"
|
||||||
"%%%%Orientation: %s\n"
|
"%%%%Orientation: %s\n"
|
||||||
"/papsdict 1 dict def\n"
|
"/papsdict 1 dict def\n"
|
||||||
@@ -874,8 +1022,10 @@ void print_postscript_header(FILE *OUT,
|
@@ -989,8 +1143,13 @@ void print_postscript_header(FILE *OUT,
|
||||||
title,
|
title,
|
||||||
bb_page_width,
|
bb_page_width,
|
||||||
bb_page_height,
|
bb_page_height,
|
||||||
|
- orientation_names[orientation]
|
||||||
+ owner,
|
+ owner,
|
||||||
orientation_names[orientation]
|
+ /* Put the fake orientation tag if paps is currently running under
|
||||||
|
+ * the CUPS filter mode. (#222137)
|
||||||
|
+ */
|
||||||
|
+ orientation_names[orientation && !page_layout->cups_mode]
|
||||||
);
|
);
|
||||||
+ g_free(owner);
|
+ g_free(owner);
|
||||||
|
|
||||||
fprintf(OUT,
|
fprintf(OUT,
|
||||||
"%% User settings\n"
|
"%% User settings\n"
|
||||||
|
@@ -1015,7 +1174,11 @@ void print_postscript_header(FILE *OUT,
|
||||||
|
page_layout->left_margin,
|
||||||
|
page_layout->page_height - bodytop,
|
||||||
|
bool_name[page_layout->do_separation_line>0],
|
||||||
|
- bool_name[page_layout->do_landscape>0],
|
||||||
|
+ /* just ignore the landscape flag when paps is currently running
|
||||||
|
+ * under the CUPS filter mode. this will stop rotating in PS that
|
||||||
|
+ * paps generates. (#222137)
|
||||||
|
+ */
|
||||||
|
+ bool_name[page_layout->do_landscape>0 && !page_layout->cups_mode],
|
||||||
|
bool_name[page_layout->do_tumble>0],
|
||||||
|
bool_name[page_layout->do_duplex>0]
|
||||||
|
);
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
diff -ruN -x 'Makefile*' -x autom4te.cache -x 'config*' -x doc -x libtool -x .deps -x .libs -x '*a' -x '*o' -x paps -x '*orig' -x 'stamp*' -x 'test*' paps-0.6.6.orig/src/paps.c paps-0.6.6/src/paps.c
|
|
||||||
--- paps-0.6.6.orig/src/paps.c 2006-05-03 18:09:58.000000000 +0900
|
|
||||||
+++ paps-0.6.6/src/paps.c 2006-08-31 17:57:47.000000000 +0900
|
|
||||||
@@ -88,6 +88,7 @@
|
|
||||||
PangoLayoutLine *pango_line;
|
|
||||||
PangoRectangle logical_rect;
|
|
||||||
PangoRectangle ink_rect;
|
|
||||||
+ int formfeed;
|
|
||||||
} LineLink;
|
|
||||||
|
|
||||||
typedef struct _Paragraph Paragraph;
|
|
||||||
@@ -98,6 +99,7 @@
|
|
||||||
char *text;
|
|
||||||
int length;
|
|
||||||
int height; /* Height, in pixels */
|
|
||||||
+ int formfeed;
|
|
||||||
PangoLayout *layout;
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -428,7 +430,7 @@
|
|
||||||
fprintf (stderr, "%s: Invalid character in input\n", g_get_prgname ());
|
|
||||||
wc = 0;
|
|
||||||
}
|
|
||||||
- if (!*p || !wc || wc == '\n')
|
|
||||||
+ if (!*p || !wc || wc == '\n' || wc == '\f')
|
|
||||||
{
|
|
||||||
Paragraph *para = g_new (Paragraph, 1);
|
|
||||||
para->text = last_para;
|
|
||||||
@@ -442,6 +444,11 @@
|
|
||||||
pango_layout_set_width (para->layout, paint_width * PANGO_SCALE);
|
|
||||||
para->height = 0;
|
|
||||||
|
|
||||||
+ if (wc == '\f')
|
|
||||||
+ para->formfeed = 1;
|
|
||||||
+ else
|
|
||||||
+ para->formfeed = 0;
|
|
||||||
+
|
|
||||||
last_para = next;
|
|
||||||
|
|
||||||
result = g_list_prepend (result, para);
|
|
||||||
@@ -469,6 +476,7 @@
|
|
||||||
while(par_list)
|
|
||||||
{
|
|
||||||
int para_num_lines, i;
|
|
||||||
+ LineLink *line_link;
|
|
||||||
Paragraph *para = par_list->data;
|
|
||||||
|
|
||||||
para_num_lines = pango_layout_get_line_count(para->layout);
|
|
||||||
@@ -476,12 +484,15 @@
|
|
||||||
for (i=0; i<para_num_lines; i++)
|
|
||||||
{
|
|
||||||
PangoRectangle logical_rect, ink_rect;
|
|
||||||
- LineLink *line_link = g_new(LineLink, 1);
|
|
||||||
|
|
||||||
+ line_link = g_new(LineLink, 1);
|
|
||||||
+ line_link->formfeed = 0;
|
|
||||||
line_link->pango_line = pango_layout_get_line(para->layout, i);
|
|
||||||
pango_layout_line_get_extents(line_link->pango_line,
|
|
||||||
&ink_rect, &logical_rect);
|
|
||||||
line_link->logical_rect = logical_rect;
|
|
||||||
+ if (para->formfeed && i == (para_num_lines - 1))
|
|
||||||
+ line_link->formfeed = 1;
|
|
||||||
line_link->ink_rect = ink_rect;
|
|
||||||
line_list = g_list_prepend(line_list, line_link);
|
|
||||||
}
|
|
||||||
@@ -504,6 +515,7 @@
|
|
||||||
int column_y_pos = 0;
|
|
||||||
int page_idx = 1;
|
|
||||||
int pango_column_height = page_layout->column_height * page_layout->pt_to_pixel * PANGO_SCALE;
|
|
||||||
+ LineLink *prev_line_link = NULL;
|
|
||||||
|
|
||||||
start_page(OUT, page_idx);
|
|
||||||
|
|
||||||
@@ -516,8 +528,9 @@
|
|
||||||
PangoLayoutLine *line = line_link->pango_line;
|
|
||||||
|
|
||||||
/* Check if we need to move to next column */
|
|
||||||
- if (column_y_pos + line_link->logical_rect.height
|
|
||||||
- >= pango_column_height)
|
|
||||||
+ if ((column_y_pos + line_link->logical_rect.height
|
|
||||||
+ >= pango_column_height) ||
|
|
||||||
+ (prev_line_link && prev_line_link->formfeed))
|
|
||||||
{
|
|
||||||
column_idx++;
|
|
||||||
column_y_pos = 0;
|
|
||||||
@@ -547,6 +560,7 @@
|
|
||||||
column_y_pos += line_link->logical_rect.height;
|
|
||||||
|
|
||||||
pango_lines = pango_lines->next;
|
|
||||||
+ prev_line_link = line_link;
|
|
||||||
}
|
|
||||||
eject_page(OUT);
|
|
||||||
return page_idx;
|
|
@ -1,47 +0,0 @@
|
|||||||
diff -ruN paps-0.6.5.orig/doc/Makefile.am paps-0.6.5/doc/Makefile.am
|
|
||||||
--- paps-0.6.5.orig/doc/Makefile.am 2005-12-21 04:35:35.000000000 +0900
|
|
||||||
+++ paps-0.6.5/doc/Makefile.am 2006-04-17 17:28:52.000000000 +0900
|
|
||||||
@@ -10,7 +10,7 @@
|
|
||||||
|
|
||||||
EXTRA_DIST = Doxyfile example-output.png mainpage.h
|
|
||||||
|
|
||||||
-htmldir = share/doc/libpaps/html
|
|
||||||
-install-data-hook:
|
|
||||||
- mkdir -p $(prefix)/$(htmldir)
|
|
||||||
- cp -dpR doxygen-html/* $(prefix)/$(htmldir)
|
|
||||||
+htmldir = $(datadir)/doc/paps-$(VERSION)/html
|
|
||||||
+#install-data-hook:
|
|
||||||
+# mkdir -p $(prefix)/$(htmldir)
|
|
||||||
+# cp -dpR doxygen-html/* $(prefix)/$(htmldir)
|
|
||||||
diff -ruN paps-0.6.5.orig/src/Makefile.am paps-0.6.5/src/Makefile.am
|
|
||||||
--- paps-0.6.5.orig/src/Makefile.am 2006-04-17 15:04:13.000000000 +0900
|
|
||||||
+++ paps-0.6.5/src/Makefile.am 2006-04-17 17:30:01.000000000 +0900
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
man_MANS = paps.1
|
|
||||||
-lib_LIBRARIES = libpaps.a
|
|
||||||
+noinst_LIBRARIES = libpaps.a
|
|
||||||
libpaps_a_SOURCES = libpaps.c
|
|
||||||
libpaps_a_inc_HEADERS = libpaps.h
|
|
||||||
libpaps_a_incdir = $(includedir)
|
|
||||||
@@ -7,9 +7,9 @@
|
|
||||||
bin_PROGRAMS = paps
|
|
||||||
paps_CFLAGS = -Wall
|
|
||||||
paps_SOURCES = paps.c
|
|
||||||
-paps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
|
||||||
+paps_LDADD = $(noinst_LIBRARIES) $(all_libraries)
|
|
||||||
paps_LDFLAGS = `pkg-config --libs pangoft2`
|
|
||||||
-paps_DEPENDENCIES = $(lib_LIBRARIES)
|
|
||||||
+paps_DEPENDENCIES = $(noinst_LIBRARIES)
|
|
||||||
|
|
||||||
EXTRA_DIST = test_libpaps.c paps.1
|
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@
|
|
||||||
|
|
||||||
|
|
||||||
test_libpaps_SOURCES = test_libpaps.c
|
|
||||||
-test_libpaps_LDADD = $(lib_LIBRARIES) $(all_libraries)
|
|
||||||
+test_libpaps_LDADD = $(noinst_LIBRARIES) $(all_libraries)
|
|
||||||
test_libpaps_LDFLAGS = `pkg-config --libs pangoft2`
|
|
||||||
-test_libpaps_DEPENDENCIES = $(lib_LIBRARIES)
|
|
||||||
+test_libpaps_DEPENDENCIES = $(noinst_LIBRARIES)
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
|||||||
Index: src/paps.c
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cvsroot/paps/paps/paps/src/paps.c,v
|
|
||||||
retrieving revision 1.4
|
|
||||||
retrieving revision 1.5
|
|
||||||
diff -u -r1.4 -r1.5
|
|
||||||
--- src/paps.c 17 Apr 2006 07:42:08 -0000 1.4
|
|
||||||
+++ src/paps.c 25 May 2006 07:26:55 -0000 1.5
|
|
||||||
@@ -190,7 +190,7 @@
|
|
||||||
GOptionEntry entries[] = {
|
|
||||||
{"landscape", 0, 0, G_OPTION_ARG_NONE, &do_landscape, "Landscape output. (Default: portrait)", NULL},
|
|
||||||
{"columns", 0, 0, G_OPTION_ARG_INT, &num_columns, "Number of columns output. (Default: 1)", "NUM"},
|
|
||||||
- {"font_scale", 0, 0, G_OPTION_ARG_INT, &font_scale, "Font scaling. (Default: 12)", "NUM"},
|
|
||||||
+ {"font-scale", 0, 0, G_OPTION_ARG_INT, &font_scale, "Font scaling. (Default: 12)", "NUM"},
|
|
||||||
{"family", 0, 0, G_OPTION_ARG_STRING, &font_family, "Pango FT2 font family. (Default: Monospace)", "FAMILY"},
|
|
||||||
{"rtl", 0, 0, G_OPTION_ARG_NONE, &do_rtl, "Do rtl layout.", NULL},
|
|
||||||
{"justify", 0, 0, G_OPTION_ARG_NONE, &do_justify, "Do justify the lines.", NULL},
|
|
||||||
Index: src/paps.1
|
|
||||||
===================================================================
|
|
||||||
RCS file: /cvsroot/paps/paps/paps/src/paps.1,v
|
|
||||||
retrieving revision 1.1
|
|
||||||
retrieving revision 1.2
|
|
||||||
diff -u -r1.1 -r1.2
|
|
||||||
--- src/paps.1 17 Apr 2006 19:21:43 -0000 1.1
|
|
||||||
+++ src/paps.1 25 May 2006 07:26:55 -0000 1.2
|
|
||||||
@@ -34,7 +34,7 @@
|
|
||||||
.B \-\-columns=cl
|
|
||||||
Number of columns output. Default is 1.
|
|
||||||
.TP
|
|
||||||
-.B \-\-fontscale=fs
|
|
||||||
+.B \-\-font\-scale=fs
|
|
||||||
Font scaling. Default is 12.
|
|
||||||
.TP
|
|
||||||
.B \-\-family=f
|
|
114
paps.spec
114
paps.spec
@ -1,64 +1,64 @@
|
|||||||
Name: paps
|
Name: paps
|
||||||
Version: 0.6.6
|
Version: 0.6.8
|
||||||
Release: 21%{?dist}
|
Release: 1%{?dist}
|
||||||
|
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: http://paps.sourceforge.net/
|
URL: http://paps.sourceforge.net/
|
||||||
Source0: http://prdownloads.sourceforge.net/paps/paps-%{version}.tar.gz
|
Source0: http://prdownloads.sourceforge.net/paps/paps-%{version}.tar.gz
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel
|
BuildRequires: pango-devel automake autoconf libtool doxygen cups-devel
|
||||||
Patch0: paps-makefile.patch
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832897&group_id=153049&atid=786241
|
||||||
## fixed in CVS
|
Patch0: paps-0.6.8-shared.patch
|
||||||
Patch2: paps-formfeed.patch
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832924&group_id=153049&atid=786241
|
||||||
## fixed in CVS
|
Patch1: paps-0.6.8-wordwrap.patch
|
||||||
Patch3: paps-0.6.6-encoding.patch
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832926&group_id=153049&atid=786241
|
||||||
## fixed in CVS
|
Patch2: paps-0.6.6-langinfo.patch
|
||||||
Patch4: paps-typo-font-scale.patch
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832929&group_id=153049&atid=786241
|
||||||
## fixed in CVS
|
Patch3: paps-0.6.6-lcnumeric.patch
|
||||||
Patch5: paps-0.6.6-segfault.patch
|
## https://sourceforge.net/tracker/index.php?func=detail&aid=1832935&group_id=153049&atid=786241
|
||||||
## fixed in CVS
|
Patch4: paps-0.6.6-exitcode.patch
|
||||||
Patch6: paps-0.6.6-font-option.patch
|
|
||||||
## fixed in CVS
|
|
||||||
Patch7: paps-0.6.6-lcctype.patch
|
|
||||||
## fixed in CVS
|
|
||||||
Patch8: paps-0.6.6-wordwrap.patch
|
|
||||||
## fixed in CVS
|
|
||||||
Patch9: paps-0.6.6-cpilpi.patch
|
|
||||||
Patch10: paps-0.6.6-exitcode.patch
|
|
||||||
Patch11: paps-0.6.6-fix-wcswidth.patch
|
|
||||||
Patch12: paps-0.6.6-langinfo.patch
|
|
||||||
Patch13: paps-0.6.6-lcnumeric.patch
|
|
||||||
Patch50: paps-cups.patch
|
Patch50: paps-cups.patch
|
||||||
|
Patch51: paps-cpilpi.patch
|
||||||
|
Patch61: paps-0.6.6-fix-wcswidth.patch
|
||||||
|
|
||||||
Summary: Plain Text to PostScript converter
|
Summary: Plain Text to PostScript converter
|
||||||
Group: Applications/Publishing
|
Group: Applications/Publishing
|
||||||
%description
|
%description
|
||||||
paps is a PostScript converter from plain text file using Pango.
|
paps is a PostScript converter from plain text file using Pango.
|
||||||
|
|
||||||
|
%package libs
|
||||||
|
Summary: Libraries for paps
|
||||||
|
Group: Development/Libraries
|
||||||
|
%description libs
|
||||||
|
paps is a PostScript converter from plain text file using Pango.
|
||||||
|
|
||||||
|
This package contains the library for paps.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Development files for paps
|
||||||
|
Group: Development/Libraries
|
||||||
|
Requires: %{name}-libs = %{version}-%{release}
|
||||||
|
%description devel
|
||||||
|
paps is a PostScript converter from plain text file using Pango.
|
||||||
|
|
||||||
|
This package contains the development files that is necessary to develop
|
||||||
|
applications using paps API.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1 -b .makefile
|
%patch0 -p1 -b .shared
|
||||||
%patch2 -p1 -b .formfeed
|
%patch1 -p1 -b .wordwrap
|
||||||
%patch3 -p1 -b .encoding
|
%patch2 -p1 -b .langinfo
|
||||||
%patch4 -p0 -b .typo
|
%patch3 -p1 -b .lcnumeric
|
||||||
%patch5 -p1 -b .segfault
|
%patch4 -p1 -b .exitcode
|
||||||
%patch6 -p1 -b .fontopt
|
|
||||||
%patch7 -p1 -b .lcctype
|
|
||||||
%patch8 -p1 -b .wordwrap
|
|
||||||
%patch9 -p1 -b .cpilpi
|
|
||||||
%patch10 -p1 -b .exitcode
|
|
||||||
%patch11 -p1 -b .wcswidth
|
|
||||||
%patch12 -p1 -b .langinfo
|
|
||||||
%patch13 -p1 -b .lcnumeric
|
|
||||||
%patch50 -p1 -b .cups
|
%patch50 -p1 -b .cups
|
||||||
aclocal
|
%patch51 -p1 -b .cpilpi
|
||||||
automake
|
#%patch11 -p1 -b .wcswidth
|
||||||
autoconf
|
autoreconf
|
||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure
|
%configure --disable-static
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
|
|
||||||
@ -66,7 +66,9 @@ make %{?_smp_mflags}
|
|||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
make install DESTDIR=$RPM_BUILD_ROOT
|
make install DESTDIR=$RPM_BUILD_ROOT
|
||||||
rm -rf $RPM_BUILD_ROOT%{_includedir}
|
|
||||||
|
# remove unnecessary files
|
||||||
|
rm $RPM_BUILD_ROOT%{_libdir}/libpaps.la
|
||||||
|
|
||||||
# make a symlink for CUPS filter
|
# make a symlink for CUPS filter
|
||||||
%{__mkdir_p} $RPM_BUILD_ROOT/usr/lib/cups/filter # Not libdir
|
%{__mkdir_p} $RPM_BUILD_ROOT/usr/lib/cups/filter # Not libdir
|
||||||
@ -82,8 +84,38 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_mandir}/man1/paps.1*
|
%{_mandir}/man1/paps.1*
|
||||||
/usr/lib/cups/filter/texttopaps
|
/usr/lib/cups/filter/texttopaps
|
||||||
|
|
||||||
|
%files libs
|
||||||
|
%defattr(-, root, root, -)
|
||||||
|
%doc COPYING.LIB
|
||||||
|
%{_libdir}/libpaps.so.*
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%defattr(-, root, root, -)
|
||||||
|
%doc COPYING.LIB
|
||||||
|
%{_includedir}/libpaps.h
|
||||||
|
%{_libdir}/libpaps.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Nov 30 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.8-1
|
||||||
|
- New upstream release.
|
||||||
|
- Remove patches merged and unnecessary anymore:
|
||||||
|
- paps-makefile.patch
|
||||||
|
- paps-formfeed.patch
|
||||||
|
- paps-0.6.6-encoding.patch
|
||||||
|
- paps-typo-font-scale.patch
|
||||||
|
- paps-0.6.6-segfault.patch
|
||||||
|
- paps-0.6.6-font-option.patch
|
||||||
|
- paps-0.6.6-lcctype.patch
|
||||||
|
- paps-0.6.8-shared.patch: Enable building shared library.
|
||||||
|
- paps-0.6.8-wordwrap.patch: Update a bit to get it working without an wordwrap
|
||||||
|
mode.
|
||||||
|
- Add paps-libs and paps-devel package.
|
||||||
|
- paps-cups.patch: Update.
|
||||||
|
- paps-cpilpi.patch: Update.
|
||||||
|
- Fix the wrong rendering with CPI option. (#237202)
|
||||||
|
- Fix the unnecessary rotation with the landscape option when paps is running
|
||||||
|
as CUPS filter. (#222137)
|
||||||
|
|
||||||
* Thu Aug 23 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-21
|
* Thu Aug 23 2007 Akira TAGOH <tagoh@redhat.com> - 0.6.6-21
|
||||||
- Rebuild
|
- Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user