2005-09-01  Kristian Høgsberg  <krh@redhat.com>

	* NEWS:
	* configure.ac: Release 0.4.2.

	* glib/poppler-page.cc (poppler_page_prepare_output_dev): Patch
	from Marco to fix more rotation special cases.

2005-08-29  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac (HAVE_FREETYPE_H): Patch from Hiroyuki Ikezoe: Set
	HAVE_FREETYPE_217_OR_OLDER to 0 if we found freetype using
	pkg-config (#4223).

2005-08-24  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Bump release to 0.4.1

	* NEWS: Sum up changes.

2005-08-24  Kristian Høgsberg  <krh@redhat.com>

	* poppler/TextOutputDev.cc: Push rotation argument down to
	GfxState constructor.  This is still not completely functional yet.

	* glib/poppler-page.cc (poppler_page_render_selection): Add
	rotation argument so API is useful.  Not yet implemented.
	(poppler_page_prepare_output_dev): Patch from Marco to fix
	rotation using the cairo backend.

Tue Aug 23 17:21:02 2005  Jonathan Blandford  <jrb@redhat.com>

	* test/Makefile.am (gtk_cairo_test_LDADD): add
	FREETYPE_{CFLAGS,LIBS} to the cairo deps

2005-08-22  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-private.h:
	* glib/test-poppler-glib.c: Patch from Marco to simplify the glib
	rotation API.

2005-08-21  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Makefile.am (INCLUDES): Add FREETYPE_CFLAGS.

	* configure.ac: Make freetype check use pkg-config if possible.

2005-08-16  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Bump version to 0.4.0.

	* NEWS: Sum up changes.

	* poppler/PDFDoc.cc: Add extended check for %%EOF.

2005-08-15  Kristian Høgsberg  <krh@redhat.com>

	* poppler/GfxFont.cc: Add fix discussed in #3131 to only use the
	MacRoman char map if the font has one or the font dicts specifies
	/MacRoman.

2005-08-06  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h: Use GdkColor for specifying selection
	colors, we alreay depend on GDK anyway.

2005-08-05  Kristian Høgsberg  <krh@redhat.com>

	* poppler/TextOutputDev.cc (visitLine): Round selection
	coordinates in device space, so selection isn't fuzzy.

	* poppler/GfxState.cc: 
	* poppler/GfxState.h: Add simple Matrix class.

2005-08-05  Kristian Høgsberg  <krh@redhat.com>
	
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* poppler/TextOutputDev.cc:
	* poppler/TextOutputDev.h: Propagate selection colors to the glib API.

2005-08-01  Kristian Høgsberg  <krh@redhat.com>

	Patch from Dan Winship <danw@novell.com>
	
	* glib/poppler-page.cc (poppler_page_copy_to_pixbuf): Set alpha to
	0xff (opaque), not 0x00.

2005-07-29  Kristian Høgsberg  <krh@redhat.com>

	* poppler/TextOutputDev.cc: Finish TextSelectionDumper class for
	extracting the text from a selection.  Add
	TextPage::getSelectionText() and TextOutputDev::getSelectionText()
	methods to expose the new functionality.

	* glib/poppler-page.cc (poppler_page_get_text): Use
	TextOutputDev::getSelectionText() to get the text from the
	selection.

	* glib/poppler-document.cc (poppler_document_new_from_file): 
	* glib/poppler-page.cc (_poppler_page_new): Add extra NULL to
	g_object_new() constructor to silence gcc warning about missing
	sentinel.

2005-07-28  Kristian Høgsberg  <krh@redhat.com>

	* poppler/poppler-config.h.in: Add GCC_PRINTF_FORMAT macro to
	annotate printf-like functions (#3638).
	
	* poppler/Error.h: Add GCC_PRINTF_FORMAT to error().

	* poppler/PSOutputDev.h: Add GCC_PRINTF_FORMAT to
	PSOutputDev::writePSFmt().

	* poppler/PSOutputDev.cc, poppler/GlobalParams.cc: Quiet new
 	printf warnings.

	* poppler/TextOutputDev.cc (TextBlock::visitSelection): Assign
	start and stop coordinates in one place so we don't assign the
	same point to both in some corner cases.
	(TextWord::visitSelection): Initialize begin to len, not len + 1
	to fix crash.

	(TextWord::visitSelection, TextLine::visitSelection): Change
	selection trigger; now midpoint of glyph must be included in
	selection area for glyph to be in selection.

2005-07-27  Martin Kretzschmar  <martink@gnome.org>

	* poppler/PSOutputDev.cc (PSOutputDev): change the constructor to
	take paper size and duplex setting parameters.
	(init): add paper size and duplex parameters.
	(writeDocSetup): add duplex parameter.

	* poppler/PSOutputDev.h: update declarations.

	* glib/poppler-private.h (struct _PopplerPSFile): store necessary
	information to eventually construct a PSOutputDev.

	* glib/poppler-page.cc (poppler_page_render_to_ps): initialize the
	output dev if it doesn't exist yet.

	* glib/poppler-document.cc (poppler_ps_file_new): don't create the
	PSOutputDev here, just store filename and page range.
	(poppler_ps_file_set_paper_size, poppler_ps_file_set_duplex): new
	functions.
	(poppler_ps_file_free): free the filename which we strdup now.

	* glib/poppler-document.h: add prototypes.

2005-07-26  Albert Astals Cid  <aacid@kde.org>

	 * qt/test-poppler-qt-cpp: Fix mem leak

2005-07-26  Kristian Høgsberg  <krh@redhat.com>

	* fofi/FoFiType1.cc: Make check for end of encoding array a bit
	more liberal so we don't crash on complex encoding arrays.

2005-07-25  Albert Astals Cid  <aacid@kde.org>

	* poppler/DCTStream.cc: Work on bad jpeg data that have garbage before
	the start marker. Fixes bug #3299

2005-07-22  Albert Astals Cid  <aacid@kde.org>

	* poppler/CairoFontEngine.cc: Fix mem leak. Reported in bug #3586 by
	Kjartan Maraas, initial patch by Martin Kretzschmar.

2005-07-22  Albert Astals Cid  <aacid@kde.org>

	* qt/test-poppler-qt.cpp: Make it possible to change the displayed
	page using Up and Down keys

2005-07-22  Albert Astals Cid  <aacid@kde.org>

	* splash/Splash.cc: Fix bugs #3728 and #3750

2005-07-20  Martin Kretzschmar  <martink@gnome.org>

	* glib/poppler-document.cc (poppler_fonts_iter_get_name): if the
	font is a subset, strip the ABCDEF+ tag.
	(poppler_fonts_iter_get_full_name): does what the old get_name did.
	(poppler_fonts_iter_get_font_type, poppler_fonts_iter_is_embedded)
	(poppler_fonts_iter_is_subset): new wrappers.

	* glib/poppler-document.h (PopplerFontType): new enum.
	Update prototypes.

2005-07-15  Martin Kretzschmar  <martink@gnome.org>

	* test/gtk-cairo-test.cc: update for 2005-06-27 change to actually
	display something again.

2005-07-10  Brad Hards  <bradh@frogmouth.net>

	* poppler/ArthurOutputDev.cc: General cleanup - removing
	dead code, and some minor tweaks. No new features.

2005-07-08  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_set_selection_alpha): Add
	this function to initialize the alpha channel when using the
	splash backend.

	* poppler/TextOutputDev.cc (visitLine): Add missing scaling of
	intra-line selection edges.

2005-07-07  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_prepare_output_dev): Account
	for page rotation when creating the cairo surface.

2005-07-06  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_copy_to_pixbuf): Add out of
	bounds checking (from Marco).

2005-07-07  Brad Hards  <bradh@frogmouth.net>

	* qt4/src/poppler-document.cc: 
	* qt4/src/poppler-qt4.h: Add pageLayout() function for Qt4
	bindings

	* qt4/tests/check_pagelayout_single.cpp:
	* qt4/tests/check_pagelayout_none.cpp:
	* Makefile.am: Add unit tests for pageLayout()

	* glib/poppler-document.cc (convert_page_mode): Update to
	reflect the Catalog API change. I'm not that good at glib,
	so this has a non-zero chance of being pure crackrock.

	* poppler/Catalog.cc:
	* poppler/Catalog.h: update page mode options to PDF 1.6

	* qt4/src/poppler-qt4.h:
	* qt4/src/poppler-document.cc: add Qt4 bindings for additional 
	pageMode() value created by change above

	* qt4/src/poppler-qt4.h: minor updates to API docs.
	
	* qt4/tests/Makefile.am:
	* qt4/tests/check_pagemode_*.cpp: unit tests for Qt4 pageMode() call
	and associated enum. This is the initial checkin for these files

2005-07-06  Albert Astals Cid  <aacid@kde.org>

	* poppler/PDFDoc.[cc|h]: Add checkFooter to check document ends with
	%%EOF
	* poppler/GfxFont.[cc|h]: Extract family, stretch and weight from the
	font descriptor

2005-07-06  Brad Hards  <bradh@frogmouth.net>

	* qt4/tests/Makefile.am:
	* qt4/tests/check_linearised.cpp: Added unit test for linearised
	property

	* qt4/tests/poppler-fonts.cpp (main): update to reflect API change,
	and also to show "[none]" if the font is nameless.

	* qt4/src/poppler-document.cc (Poppler): 
	* qt4/src/poppler-qt4.h: remove the unicode translation bool,
	it is really an internal thing.

2005-07-05  Albert Astals Cid  <aacid@kde.org>

	* qt4/src/poppler-document.cc (Poppler): 
	* qt4/src/poppler-qt4.h: Don't crash with files that have fonts with
	no name, for example the one found at
	http://bugs.kde.org/show_bug.cgi?id=101520.

2005-07-05  Brad Hards  <bradh@frogmouth.net>

	* qt4/tests/check_author.cpp:
	* qt4/tests/check_permissions.cpp:
	* Makefile.am:
	* .cvsignore: add a couple more test cases
	
	* qt4/src/poppler-document.cc (Poppler): 
	* qt4/src/poppler-qt4.h: Add Qt4 bindings for the 
	additional user permission properties.

	* poppler/XRef.h:
	* poppler/Xref.cc:
	* poppler/PDFDoc.h: Add some more user permissions properties -
	high resolution printing, document assembly, extraction for
	accessibility and form completion.

2005-07-04  Brad Hards  <bradh@frogmouth.net>

	* qt4/src/poppler-page.cc: fix typo bug that
	prevented correct detection of upside down pages

	* qt4/tests/check-orientation.cpp: fix path to
	point to test module.
	
	* qt4/.cvsignore: update to reflect new files
	
	* qt4/tests/Makefile.am:
	* qt4/tests/poppler-fonts.cpp: initial import of a simple font
	metadata listing application.
	
	* qt4/src/poppler-qt4.h:
	* qt4/src/poppler-document.cc complete Qt4 font metadata handling
	
	* qt4/src/poppler-qt4.h:
	* qt4/src/poppler-page.cc: change the render API to make it more
	Qt-like.

	* qt4/tests/test-poppler-qt4.cpp:
	* qt4/tests/stress-poppler-qt4.cpp: update to reflect changes
	to render API
	
	* poppler/FontInfo.h/cc: make FontInfo::type() return a enum
	instead of a GooString. As discussed on mailing list, if you
	want a string representation, you get to make one at the bindings
	layer (ie typeName() didn't make the grade in the final patch)

	* qt4/tests/poppler-fonts.cpp (main): change order in test
	code to reflect actual testcase file

2005-07-01  Kristian Høgsberg  <krh@redhat.com>

	* poppler/TextOutputDev.cc: Make selection also work when dragging
	backwards in the text flow.  Currently this is a big pile of
	if-statements, and there is certainly room for improvement.

2005-06-30  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.h: * glib/poppler-page.cc
	(poppler_page_copy_to_pixbuf): Fix splash compilation (patch from
	Marco).
	(poppler_page_render_to_pixbuf): Drop dest_x and dest_y
	coordinates from this function.  This functionality can be
	achieved using a sub-GdkPixbuf.

	* glib/test-poppler-glib.c (main): Update test case.

2005-06-29  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-private.h: Move TextOutputDev.h include here from
	poppler-page.cc

2005-06-29  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac:
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-private.h:
	* poppler/CairoOutputDev.cc:
	* poppler/CairoOutputDev.h:
	* poppler/Page.cc:
	* poppler/Page.h:
	* poppler/TextOutputDev.cc:
	* poppler/TextOutputDev.h: Add support for rendering real
	selection (based on text flow).

2005-06-28  Albert Astals Cid  <aacid@kde.org>
	
	* poppler/FontInfo.[cc,h]: Add FontInfo::getType()
	
2005-06-28  Albert Astals Cid  <aacid@kde.org>
	
	* poppler/ArthurOutputDev.cc: use transformation matrix for image
	rendering

2005-06-28  Brad Hards  <bradh@frogmouth.net>

	* .cvsignore:
	* qt4/.cvsignore:
	* qt4/src/.cvsignore:
	* qt4/tests/.cvsignore: update to reflect the Qt4 bindings.

2005-06-28  Brad Hards  <bradh@frogmouth.net>

	* qt4/:
	* Makefile.am:
	* configure.ac:
	* poppler-qt4.pc.in: Initial import of Qt4 bindings, based
	on the Qt3 bindings. API is still in flux.

	* poppler/AuthurOutputDev.[cc,h]:
	* poppler/Makefile.am: Initial import of Qt4 backend renderer. 
	Incomplete at this stage.

2005-06-27  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc:
	* poppler/CairoOutputDev.h: Change CairoOutputDev to render to a
	given surface and let the user create that surface.
	
	* glib/poppler-document.cc:
	* glib/poppler-page.cc:
	* glib/poppler-private.h: Create the cairo image surface here
	instead and pass it to the CairoOutputDev for rendering.
	
	* poppler/CairoOutputDevImage.cc:
	* poppler/CairoOutputDevImage.h:
	* poppler/CairoOutputDevX.cc:
	* poppler/CairoOutputDevX.h:
	* poppler/Makefile.am: Remove specialized cairo output devices.

2005-06-26  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc:
	* poppler/CairoOutputDev.h: Switch back to using drawChar() for
	text, but utilize the beginString() and endString() hooks so we
	can use cairo_show_glyphs() efficiently.

2005-06-26  Albert Astals Cid <aacid@kde.org>
	
	* qt/poppler-page.cc:
	* qt/poppler-page.h: Add PageTransition class and 
	PageTransition* Page::getTransition() const; to the qt frontend.

2005-06-26  Martin Kretzschmar  <martink@gnome.org>

	* glib/.cvsignore: add poppler-enums.[ch].

	* configure.ac: require glib 2.4+ for g_value_take_string and
	G_DEFINE_TYPE.

2005-06-25  Jeff Muizelaar  <jeff@infidigm.net>

	* poppler/Error.h: Maybe fix build on Solaris.

2005-06-20  Kristian Høgsberg  <krh@redhat.com>

	* NEWS:
	* configure.ac: Bump version to 0.3.3 and sum up changes since
	last release.

	* glib/poppler-page.cc (poppler_page_find_text): Initialize xMin
	and yMin to avoid referencing unintialized memory (#3582).

2005-06-20  Martin Kretzschmar  <martink@gnome.org>

	* glib/poppler-document.cc (info_dict_get_string): convert
	from PDFDocEncoding to UTF-8.

2005-06-20  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler.h: Clean up glib rotation implementation and add a
	getter for rotation.  Patch from Marco.

2005-06-20  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc:
	* poppler/FontInfo.cc: Fixes from Marco to handle fonts without
	name (typically type 3 fonts) and fix an iterator bug.

2005-06-20  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_get_link_mapping): Adjust
	link coordinates so they're relative to bounding box lower left
	corner (#3396).

2005-06-17  Kristian Høgsberg  <krh@redhat.com>

	* autogen.sh: Patch from Emil Soleyman-Zomalan to enable checks
	for automake >= 1.7 (#3554).

2005-06-15  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc:
	* glib/poppler-document.h: Patch from Marco to get initial status
	(open or closed) for bookmark subtrees.

2005-06-13  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc:
	* glib/poppler-document.h:
	* glib/poppler-private.h:
	* glib/poppler.h:
	* glib/test-poppler-glib.c:
	* poppler/Makefile.am: Patch from Marco to extract font info from
	document.

2005-06-08  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc: Remember to delete tmpFileName.
	Patch from Nikolai Weibull (#3491).

2005-06-07  Kristian Høgsberg  <krh@redhat.com>

	* qt/test-poppler-qt.cpp: Add stdlib.h include for exit().

2005-06-02  Kristian Høgsberg  <krh@redhat.com>

	* poppler/TextOutputDev.h:
	* qt/poppler-qt.h: Patch from Stanislav Brabec <sbrabec@suse.cz>
	to fix gcc 4.0.1 warnings on undeclared friend classes.
	
	* test/gtk-splash-test.cc: Fix from Martin Kretzschmar
	<martink@gnome.org> to compile with OPI enabled (#2911).

2005-06-02  Kristian Høgsberg  <krh@redhat.com>

	Patch from Stanislav Brabec <sbrabec@suse.cz>:

	* configure.ac:
	* poppler-cairo.pc.in:
	* poppler-glib.pc.in:
	* poppler-qt.pc.in:
	* poppler-splash.pc.in: Misc fixes to pkg-config files.

2005-06-01  Jeff Muizelaar  <jeff@infidigm.net>

	* poppler/Error.cc:
	* poppler/Error.h: Make error handling function setable through
	setErrorFunction.

	Based on a patch by Albert Astals Cid.

2005-05-29  Kristian Høgsberg  <krh@redhat.com>

	* glib/*: Add more meta data properties to poppler document.
	Patch by Emil Soleyman-Zomalan (#3359).

2005-05-26  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc (clip): Remove snapToGrid so clip()
	prototype matches what Gfx actually calls (fixes clipping).
	
	* poppler/CairoOutputDev.cc: Update fill color, stroke color, fill
	opacity and stroke opacity from GfxState on restore, since they
	aren't handled by cairo_restore() (#3362).

	* poppler/CairoOutputDev.cc: Comment out tolerance setting until
	we figure out how cairo settings relate to pdf settings.

	* poppler/CairoOutputDev.cc: Support fill and stroke opacity.
	
	* poppler/GfxState.cc: 
	* poppler/GfxState.h: Add GfxColorSpace::getRGBLine here and
	implement in subclasses.

	* poppler/CairoOutputDev.cc (drawImage): Use getRGBLine here.

Mon May 23 00:22:41 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-document.h: Add a permissions flag to the glib
	bindings.

2005-05-21  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc (poppler_ps_file_new): Fix off-by-one
	error spotted by Jürg Billeter.

2005-05-20  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc: Account for different row vs. column
	vector conventions between cairo and poppler.

	* poppler/CairoFontEngine.cc: Only get the code to gid map if
	we're using freetype 2.1.7 or older (#3340).

2005-05-19  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc: Only cast to Gfx8BitFont when we
	know for sure we have a truetype font.
	GfxCIDFont::getCIDToGIDLen() can return 0 in which case codeToGID
	will be NULL, and we end up casting it to a Gfx8BitFont (#3265).

2005-05-18  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Require cairo 0.5.0, bump release to 0.3.2.

	* NEWS: Sum up latest changes.

	* glib/poppler-document.cc (poppler_ps_file_new): Take a page
	range here instead of just number of pages.
	
2005-05-17  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDevX.cc: 
	* test/gtk-cairo-test.cc: Chase the cairo xlib constructor again.

2005-05-16  Kristian Høgsberg  <krh@redhat.com>

	Patch from Christian Persch (#3300):
	
	* configure.ac: Check for glib-mkenums.

	* glib/Makefile.am (poppler-enums.h): Generate glib enums at
	compile time.

	* glib/poppler-enums.c:
	* glib/poppler-enums.h: Removed.

2005-05-16  Kristian Høgsberg  <krh@redhat.com>
	
	* test/gtk-cairo-test.cc: Update this test case also.

	* poppler/CairoOutputDevX.cc: Track changes to cairo Xlib surface
	constructors.

	* poppler/CairoFontEngine.cc (cairo_font_face_destroy): Make this
	static.

Thu May 12 23:10:45 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler.gidl: add metadata file.

2005-05-12  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc: 
	* poppler/CairoOutputDevX.cc: 
	* poppler/CairoOutputDevImage.cc: 
	* test/gtk-cairo-test.cc: Update to latest cairo changes, patch
	from Jens Taprogge (#3281)

2005-05-11  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler.cc (poppler_get_backend, poppler_get_version): Add
	these functions so it's easy to tell if poppler is using cairo or
	splash and what version.

	* glib/test-poppler-glib.c (main): Print out version and backend.

2005-05-06  Kristian Høgsberg  <krh@redhat.com>

	* glib/Makefile.am (libpoppler_glib_la_LIBADD): Link poppler-glib
	against poppler.

	* qt/Makefile.am (libpoppler_qt_la_LIBADD): Ditto for qt.

	* poppler-glib.pc (Libs): Drop -lpoppler from link.

	* poppler-qt.pc (Libs): Ditto for qt.

	* configure.ac: Test for both libqt-mt.la and libqt-mt.so in that
	order.

2005-05-04  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc (CairoOutputDev::drawImageMask,
	CairoOutputDev::drawImage): Track cairo cvs API changes; use
	cairo_mask() and cairo_paint() for drawing image masks and images.

2005-05-04  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoOutputDev.cc: Fix matrix convention confusion.

2005-05-04  Kristian Høgsberg  <krh@redhat.com>

	Patches from Albert Astals Cid:
	
	* qt/poppler-page.cc (getText): Use QString::fromUtf8() instead of
	implicit latin1 cast constructor.
	
	* qt/test-poppler-qt.cpp (main): Use a QLabel for showing text
	instead of qDebug.

Wed May  4 02:31:05 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-document.cc:
	* glib/poppler-document.h:
	* glib/poppler-enums.c: (poppler_permissions_get_type):
	* glib/poppler-enums.h:
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler.h:

	Register a bunch of boxed types to test introspection, and for
	LBs.  Also, remove unused 'popper_document_save()' (-:

2005-05-01  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc:
	* poppler/CairoFontEngine.h:
	* poppler/CairoOutputDev.cc: Back out workaround for cairo 0.4.0
	font API and port to new cairo head.

2005-05-01  Jeff Muizelaar  <jeff@infidigm.net>

	* splash/SplashFTFont.cc (SplashFTFont::getGlyphPath):
	Use FT_LOAD_NO_BITMAP to make sure we get outlines loaded instead
	of bitmaps for use in FT_Outline_Decompose.

	Patch from Albert Astals Cid.

2005-05-01  Jeff Muizelaar  <jeff@infidigm.net>

	* goo/gmem.c: (gmalloc), (grealloc), (gfree):
	* goo/gmem.h: make memory functions use size_t instead of int.
	
	Patch from Takashi Iwai through Albert Astals Cid.

2005-04-30  Jeff Muizelaar  <jeff@infidigm.net>

	* qt/poppler-document.cc (Document::unlock) :
	* qt/poppler-qt.h (Document::unlock):
	Add const to the password argument.

	Patch from Albert Astals Cid.

2005-04-30  Jeff Muizelaar  <jeff@infidigm.net>

	* fofi/FoFiType1.cc (FoFiType1::parse):
	Don't assume Encoding array of Type1 fonts end in "foo def".
	http://partners.adobe.com/public/developer/en/font/T1_SPEC.PDF says
	"This sequence of assignments must be followed by an instance of the
	token def or readonly; such a token may not occur within the sequence
	of assignments." so it must end with "readonly" "def" "readonly def"
	(That is what most fonts are using and this is why it was not
	crashing)

	Patch from Albert Astals Cid.

Fri Apr 29 14:54:44 2005  Jonathan Blandford  <jrb@redhat.com>

	* goo/GooTimer.h: New class to do simple timing checks.

	* glib/poppler-document.c: Patch from Martin Kretzschmar to really
	set the PDF version correct.  Third time's the charm.

2005-04-29  Kristian Høgsberg  <krh@bitplanet.net>

	* configure.ac: Bump release to 0.3.1.

	* NEWS: Write up news for 0.3.1 release.

2005-04-28  Kristian Høgsberg  <krh@redhat.com>

	Patch from Martin Kretzschmar:

	* poppler/GlobalParams.cc: use UTF-8 as the default text encoding.
	Fixes Bug 2934.

2005-04-27  Jeff Muizelaar  <jeff@infidigm.net>

	* configure.ac:
	* poppler/FlateStream.cc:
	* poppler/FlateStream.h:
	* poppler/Makefile.am:
	* poppler/Stream.cc:
	* poppler/Stream.h: Add a reimplementation of FlateStream using
	zlib.

2005-04-27  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Catalog.cc (NameTree::lookup): Fix bsearch return value
	NULL check.  Found by Albert Astals Cid.

Tue Apr 26 13:13:42 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/test-poppler-glib.c (main): add a quick dump-to-text test.

2005-04-24  Kristian Høgsberg  <krh@redhat.com>

	* qt/Makefile.am (libpoppler_qt_la_SOURCES): Add poppler-private.h
	to SOURCES.

2005-04-23  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc: Use the right fileName for loading
	CID fonts (#3114).

2005-04-22  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Actually commit version number bump.

2005-04-22  Martin Kretzschmar  <martink@gnome.org>

	* poppler/CairoFontEngine.cc: declare matrix variable before the
	first goto. Fixes build with gcc 3.3.

Fri Apr 22 00:01:40 2005  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc: Hack around semi-broken cairo-0.4.0
	font API to fix the problem where some glyphs would show up at the
	wrong sizes.  We now create an FT_Face for each size and font
	combination we encounter, since an FT_Face can't be shared between
	several cairo_font_t.

Thu Apr 21 15:43:52 2005  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Outline.cc: 
	* poppler/Outline.h: Implement the documented behaviour for
	Outline::getItems() and OutlineItem::getKids() and make
	documentation more precise (Patch from Marco).

Thu Apr 21 02:25:20 2005  Kristian Høgsberg  <krh@redhat.com>

	* poppler/CairoFontEngine.cc (CairoFont::getFont): Cache
	cairo_font_t's for a given CairoFont.  With this patch cairo will
	recognize glyphs coming from the same font as such and the glyph
	cache will actually work.

	* glib/poppler-document.cc (poppler_document_new_from_file): Add
	output device (cairo or splash) to PopplerDocument and initialize
	it in the constructor.

	* glib/poppler-page.cc (splash_render_to_pixbuf,
	cairo_render_to_pixbuf): Use output device from associated poppler
	document instead of creating a new one.

	* poppler-glib.pc.in (Requires): Add Requires: field.

	* poppler/Page.cc (loadThumb): Remove unecessary and buggy call to
	Stream::addFilters(), reported by Ryan Lortie (#3046).

2005-04-13  Jeff Muizelaar  <jrmuizel@nit.ca>

	* qt/poppler-page.cc (Page::getText):
	* qt/poppler-qt.h: add a getText method for getting
	the text on a page

	* qt/test-poppler-qt.c (PDFDisplay::PDFDisplay): 
	add the option to display the text on a page

	Patch from Albert Astals Cid.

Tue Apr 19 17:21:19 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-document.cc (poppler_document_get_property): Use
	%.2g instead.

Tue Apr 19 17:11:52 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-document.cc (poppler_document_get_property): Use %g
	instead of %f to avoid versioning like PDF-1.50000

Tue Apr 19 15:43:35 2005  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-action.cc (_poppler_action_new): Handle NULL links
	gracefully (fix from Jeff).

Tue Apr 19 00:20:08 2005  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Catalog.cc: Fix from Marco to make sure we always
	initialize Catalog::pageLabelInfo.

Sat Apr 16 14:53:15 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/Makefile.am: Create poppler-enums.[ch]

	* glib/poppler.h:
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-action.h: Try to clean up the headers a bit

	* glib/poppler-document.cc:
	* glib/poppler-document.h: Add support for document data.
	Implemented as a lot of GObject properties. 

	* glib/poppler-enums.c:
	* glib/poppler-enums.h: New autogenerated files.

	* glib/test-poppler-glib.c: Test the new document metadata.  Seems
	to work nicely, other than the PDF string and View Prefs.

	* poppler/Catalog.cc:
	* poppler/Catalog.h: Extend to support PageLayout.

2005-04-14  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-private.h:
	* glib/poppler.h: Patch from Marco Pesenti Gritti to set page
	orientaton.

2005-04-13  Jeff Muizelaar  <jrmuizel@nit.ca>

	* poppler/CairoOutputDevImage.cc (getBitmap): remove unused
	SplashBitmap. Patch from Albert Astals Cid.

2005-04-12  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Add fontconfig to PKG_CHECK_MODULES for the cairo
	backend too, since we shouldn't depend on cairo.pc to pull that in
	for us.

	* poppler/Makefile.am (INCLUDES): Add $(splash_includes) to
	INCLUDES to make sure the fontconfig include path is added when
	using the splash backend.

2005-04-09  Jeff Muizelaar  <jrmuizel@nit.ca>

	* poppler-qt.h:
	* poppler-document.cc (okToPrint, okToChange, okToCopy):
	Patch from Albert Astals Cid adding more metadata exports

2005-04-08  Kristian Høgsberg  <krh@redhat.com>

	* poppler-qt.pc.in (Libs): Add -lpoppler to Libs.

2005-04-07  Jeff Muizelaar  <jrmuizel@nit.ca>

	* configure.ac: redo the qt tests from Albert Astals Cid

2005-04-07  Jeff Muizelaar  <jrmuizel@nit.ca>

	* qt/poppler-document.cc:
	* qt/poppler-page.cc:
	* qt/poppler-qt.h:
	Patch from Albert Astals Cid adding consts and exporting some more
	metadata.

2005-04-07  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc: 
	* glib/poppler-document.h:
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-private.h: Print to PS support from Marco Pesenti
	Gritti.

Thu Apr  7 12:25:39 2005  Jonathan Blandford  <jrb@redhat.com>

	* configure.ac: check for qt, not glib, when enabling the qt
	subdir

2005-04-06  Jeff Muizelaar  <jrmuizel@nit.ca>

	* .cvsignore, glib/.cvsignore, qt/.cvsignore:
	Add more things to .cvsignore.
	Patch from Martin Kretzschmar.

2005-04-06  Jeff Muizelaar  <jrmuizel@nit.ca>

	* poppler-page.cc (Page::Page, Page::~Page):
	Construct and deconstruct the PageData object.
	Patch from Albert Astals Cid.

2005-04-06  Jeff Muizelaar  <jrmuizel@nit.ca>

	* Makefile.am, configure.ac: Add configuration for qt wrapper.
	
	* poppler-qt.pc.in:
	* qt/Makefile.am:
	* qt/poppler-document.cc:
	* qt/poppler-page.cc:
	* qt/poppler-private.h:
	* qt/poppler-qt.h:
	* qt/test-poppler-qt.cpp:
	New files.

2005-04-05  Kristian Høgsberg  <krh@redhat.com>

	* NEWS: Attempt to sum up changes since 0.1.2.

	* configure.ac: Bump release to 0.2.0, add AC_DEFINEs for cairo
	and splash availability.

	* poppler/CairoFontEngine.cc: Disable hinting.

	* glib/poppler-page.cc (poppler_page_render_to_pixbuf): Choose
	either splash or cairo rendering, based on configure choice.
	(cairo_render_to_pixbuf): New function to render using the cairo
	backend.
	(splash_render_to_pixbuf): Split out the splash code to this
	function.

2005-04-04  Kristian Høgsberg  <krh@redhat.com>

	* ChangeLog: Add this entry to test commit mailer script.
	
	* TODO: Add reminder about using PDF font descriptors with
	fontconfig.

	* configure.ac: Add checks for mkstemp() and mkstemps().

	* glib/poppler-page.cc (poppler_page_find_text): Reverse
	y-coordinates so we return PDF style coordinates.

	From Maro Pesenti Gritti <mpgritti@gmail.com>:
	
	* configure.ac, poppler/Makefile.am: Check for fontconfig when
	we're building the splash backend.

	* glib/poppler-page.cc (poppler_page_get_text): New function to
	select text on page.

2005-04-04  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_find_text): Reverse list of
	matches so we get them in the right order.

2005-04-03  Martin Kretzschmar  <martink@gnome.org>

	* poppler/DCTStream.h: Wrap #include <jpeglib.h> in extern "C"
	Fixes build with unpatched libjpeg.

2005-04-02  Jeff Muizelaar  <jrmuizel@nit.ca>

	* poppler/Page.h:
	* poppler/Page.cc (Page::Page):
	Some initial infrastructure for supporting transitions.

2005-03-31  Kristian Høgsberg  <krh@redhat.com>
	
	* glib/poppler-page.cc (poppler_page_render_to_pixbuf): Clip
	output to destination pixbuf and fix RGB order.

2005-03-31  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-page.cc (poppler_page_find_text): New function to
	seach a page for occurrences of a given text string.

	* glib/poppler-page.cc: Add g_return_if_fail() checks to a couple
	of functions.
	
Thu Mar 31 00:26:20 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h (poppler_page_get_link_mapping,
	poppler_page_free_link_mapping): New functions to get a mapping of
	links to locations on the current document.

2005-03-30  Jeff Muizelaar <jrmuizel@nit.ca>

	* poppler/DCTStream.h: change x to unsigned int to eliminate
	comparision warning

2005-03-30  Jeff Muizelaar <jrmuizel@nit.ca>

	* poppler/Catalog.cc: delete pageLabelInfo on deconstruction

Tue Mar 29 23:07:17 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-page.h: Reformat.

Tue Mar 29 22:49:15 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-action.[ch]: New item to encapsulate links.
	* glib/poppler-document.[ch] (poppler_index_iter_get_action): New
	function to get the action.  Also, fix some warnings.
	* glib/poppler-private.h (_poppler_action_new): New function.
	* glib/test-poppler-glib.c: Fix warnings.

Tue Mar 29 02:36:00 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-document.[ch] (PopplerIndexIter): Add an iter to
	extract the index from the doc.  Includes a bad hack, for now.

Mon Mar 28 22:02:07 2005  Jonathan Blandford  <jrb@redhat.com>

	* glib/poppler-page.cc:
	* glib/poppler-page.h (poppler_page_get_thumbnail_size): New
	function. 
	* poppler-glib.pc.in: add -lpoppler-glib to the libs line.

2005-03-28  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Page.cc (loadThumb): Backend agnostic method for
	extracting an embedded thumbnail iamge.

	* poppler/Dict.cc (lookupInt): New convenience method.

	* glib/poppler-page.cc (poppler_page_get_thumbnail): New glib
	function for getting the embedded thumbnail image for a page.

2005-03-25  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Check for fontconfig for glib bindings.

2005-03-24  Kristian Høgsberg  <krh@redhat.com>

	* glib/Makefile.am: Use POPPLER_GLIB_CFLAGS and POPPLER_GLIB_LIBS
	instead of GTK_TEST_*.  Reported by Adam Jackson <ajax@nwnk.net>.

2005-03-23  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Catalog.cc (indexToLabel, labelToIndex): Add stricter
	checking of incoming labels and indices.

	* glib/test-poppler-glib.c (main): Change test program to take the
	page label from the command line.

	* glib/poppler-page.cc:
	* glib/poppler-page.h: Add poppler_page_get_index() and rename
	popper_page_get_dimension() to popper_page_get_size()

2005-03-22  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc: Implement poppler_document_save().
	
	* glib/poppler-document.h: Add prototype and format headers
	properly.

2005-03-22  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Fix --disable-popper typo reported by Albert.
	Require exactly cairo 0.4 since CVS cairo has API changes.

2005-03-22  Kristian Høgsberg  <krh@redhat.com>

	* poppler/Array.cc:
	* poppler/Array.h: Add getString() convenience method.
	
	* poppler/Catalog.cc:
	* poppler/Catalog.h: Optimize lookup of named destinations.

2005-03-21  Kristian Høgsberg  <krh@redhat.com>
	
	* NEWS, TODO: Update these.

2005-03-21  Kristian Høgsberg  <krh@redhat.com>

	From Albert Astals Cid <tsdgeos@yahoo.es>:
	
	* poppler/Catalog.cc, poppler/Catalog.h: Parse PageMode setting
	from the Catalog dict and expose it through getPageMode() method.

2005-03-21  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc:
	* glib/poppler-document.h: Expose the document title as a GObject
	property.
	
	* glib/poppler-page.cc: Expose the page label as a GObject
	property.
	
	* glib/poppler-private.h: Add the page index to PopplerPage.
	
	* glib/test-poppler-glib.c: Print out page label and document
	title.
	
	* poppler/Catalog.cc:
	* poppler/Catalog.h: Add page label accessors.
	
	* poppler/PageLabelInfo.cc:
	* poppler/PageLabelInfo.h: New files.

	* poppler/Makefile.am: Add new files to sources.
	
2005-03-20  Kristian Høgsberg  <krh@redhat.com>

	* glib/poppler-document.cc:
	* glib/poppler-page.h:
	* glib/poppler.cc:
	* poppler/Array.cc:
	* poppler/Array.h:
	* poppler/Catalog.cc: Fix up filenames in #include statements and
	comments.

2005-03-19  Kristian Høgsberg  <krh@redhat.com>

	Land the first bits of the glib wrapper.

	* Makefile.am:
	* configure.ac: Add new glib subdirectory and configure options
	for glib wrapper.
	
	* glib/Makefile.am:
	* glib/poppler-document.cc:
	* glib/poppler-document.h:
	* glib/poppler-page.cc:
	* glib/poppler-page.h:
	* glib/poppler-private.h:
	* glib/poppler.cc:
	* glib/poppler.h:
	* glib/test-poppler-glib.c:
	* poppler-glib.pc.in: New files.

2005-03-16  Jeff Muizelaar  <jrmuizel@nit.ca>

	From Dan Sheridan <dan.sheridan@postman.org.uk>

	* poppler/XRef.cc (XRef::checkEncrypted):
	The key length should be 5 for revision 2 documents.
	
2005-03-11  Kristian Høgsberg  <krh@redhat.com>

	From  Jeff Muizelaar  <jrmuizel@nit.ca>:
	
	* poppler/CairoOutputDev.cc (CairoOutputDev::drawImageMask): Use
	getLine instead of getPixel.
	
	* configure.ac: Add checks for libjpeg.

	* DCTStream.cc, DCTStream.h, Stream.cc, Stream.h, Makefile.am:
	Conditionally use libjpeg instead of xpdf jpeg decoder.
	
2005-03-10  Kristian Høgsberg  <krh@redhat.com>

	From Jeff Muizelaar <jrmuizel@nit.ca>:

	* poppler/CairoFontEngine.cc (CairoFontEngine::getFont):
	Don't print "Type 3 font!" message.

	* poppler/CairoOutputDev.cc (CairoOutputDev::drawImageMask):
	Enable image mask drawing and do it properly, albeit slowly.

	* poppler/CairoOutputDev.h
	(CairoOutputDev::interpretType3Chars): Return true so that 
	Gfx.cc turns type3 characters into calls to drawImageMask
	
2005-03-09  Kristian Høgsberg  <krh@redhat.com>

	* NEWS: Describe 0.1.2 (and 0.1.1) release.

	* configure.ac: Bump poppler version to 0.1.2

2005-03-09  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Bump cairo requirement to 0.4.

2005-03-04  Kristian Høgsberg  <krh@redhat.com>

	Patch from Jeff Muizelaar <jrmuizel@nit.ca>.  Changed to allocate
	glyphs using gmalloc.

	* poppler/CairoOutputDev.cc (CairoOutputDev::drawString):
	Implement drawString instead of drawChar. This change should
	make clipping to a text path work and has a performance
	improvement. Currently the code is a little ugly because we
	can't concat matrices to cairo without losing our current font.

	* poppler/CairoOutputDev.h (CairoOutputDev::useDrawChar):
	Tell Gfx.cc that it should use drawString instead of drawChar.

2005-03-04  Kristian Høgsberg  <krh@redhat.com>

	* test/gtk-cairo-test.cc (view_load): 
	* test/gtk-splash-test.cc (view_load): Fix missing return
	statement, and remove unused variables.

	* configure.ac: Add configure option to enable the default KDE
	flags as described by Albert Astals Cid <tsdgeos@yahoo.es>.

	* TODO: Update with Jeff's items.

	* .cvsignore:
	* */.cvsignore: Add these to silence CVS.
	
	* configure.ac: Implement same check for gtk+-2.0 tests as for
	cairo.

2005-03-04  Kristian Høgsberg  <krh@redhat.com>

	* configure.ac: Only fail hard in check for cairo if the user
	specified --enable-cairo-output (from Brad Hards
	<bradh@frogmouth.net>).  Print summary of configure results at the
	end of configure script.

	* poppler/poppler-config.h: Remove this file (noticed by Brad
	Hards <bradh@frogmouth.net>).

2005-03-03  Kristian Høgsberg  <krh@redhat.com>

	Patch from Jeff Muizelaar <jrmuizel@nit.ca>:

	* poppler/CairoOutputDev.cc (CairoOutputDev::drawImage,
	CairoOutputDev::drawImageMask): destroy the image surface and
	free the image buffer.
	
2005-03-03  Kristian Høgsberg  <krh@redhat.com>

	* autogen.sh: Add -i to autoreconf invocation.

	* autogen.sh: Add to CVS.

2005-03-01  Kristian Høgsberg  <krh@redhat.com>

	* poppler/*.h: Take config.h out of header files.

	* configure.ac: Bump release to 0.1.1 to build a tar ball that
	works with CVS evince.

	* poppler.pc.in (Cflags): Change include dir to be poppler.

	* poppler/Makefile.am (poppler_include_HEADERS): Add splash and
	cairo headers.

2005-02-27  Kristian Høgsberg  <krh@redhat.com>

	* test/gtk-cairo-test.cc: Add cairo test case.

	* configure.ac, poppler/Makefile.am, poppler/Cairo*: Add Alex
	Larsons cairo output device.
	
	* configure.ac, Makefile.am: Make splash backend conditional. 
	
	* test/*: Add optional GdkRGB based test program (taken from
	evince).
	
	* goo/*: rename files and functions to GooHash, GooString etc. to
	avoid nasty glib clash.
	
	* poppler.pc.in: New file.

	* configure.ac: Combining bits from evince configure.ac and
	removing checks only required by the xpdf applications.

	* everything: Created poppler as a fork of xpdf.
