Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Sep 29, 2012

  1. Tony Cook

    revert threading changes, they aren't ready for the mainline yet


Sep 17, 2012

  1. Tony Cook

    adding tracing for the slot APIs


Aug 26, 2012

  1. Tony Cook

    add the context slot APIs


Aug 25, 2012

  1. Tony Cook

    add mutex functions to the API


Aug 14, 2012

  1. Tony Cook

    add some context dependent functions to the API

  2. Tony Cook

    update I/O layers to accept a context on creation

  3. Tony Cook

    WIP, OMG it works

  4. Tony Cook

    WIP, it compiles

  5. Tony Cook

    WIP context objects


May 24, 2012

  1. Tony Cook

    [rt #77173] improve error reporting on an API version mismatch


Oct 10, 2011

  1. Tony Cook

    Merge the I/O buffering branch

    commit 1d817f4
    Author: Tony Cook <>
    Date:   Mon Oct 10 18:07:12 2011 +1100
        move changes into release area
    commit a0392ff
    Author: Tony Cook <>
    Date:   Sat Oct 8 13:37:10 2011 +1100
        bump API revision level and note the cause (in a comment)
    commit fdbad1c
    Author: Tony Cook <>
    Date:   Sat Oct 8 12:36:44 2011 +1100
        fill out changes some more
    commit b54571f
    Author: Tony Cook <>
    Date:   Sat Oct 8 12:15:05 2011 +1100
        document io_new_cb() callbacks a little + some cleanup
    commit a5504e7
    Author: Tony Cook <>
    Date:   Sat Oct 8 11:53:17 2011 +1100
        make new I/O layer object constructors and document them
    commit c631d25
    Author: Tony Cook <>
    Date:   Sat Oct 8 00:14:07 2011 +1100
        document most I/O layer functions, export the io_glue constructors
    commit 1d7d283
    Author: Tony Cook <>
    Date:   Thu Oct 6 18:59:49 2011 +1100
        make sure we read bytes for callback IO objects
    commit 2aacacb
    Author: Tony Cook <>
    Date:   Thu Oct 6 17:00:35 2011 +1100
        document io_new_cb perl callbacks, buffered parameter and some cleanup
    commit b1cb9fb
    Author: Tony Cook <>
    Date:   Mon Oct 3 16:36:58 2011 +1100
        add Imager::IO pod coverage tests + add method docs
    commit dd20383
    Author: Tony Cook <>
    Date:   Mon Oct 3 12:31:29 2011 +1100
        move internals to the end of iolayer.c
    commit 4692ab9a42838919f1f5fd185f341d592319601b
    Author: Tony Cook <>
    Date:   Mon Oct 3 11:58:35 2011 +1100
        clean up unneeded structures
    commit b179462d315f0f953d55ec216d92912d8af6be7f
    Author: Tony Cook <>
    Date:   Fri Sep 30 23:36:41 2011 +1000
        fail flush if error is set
    commit 0db35f7e68d5027c85f7bf28b6706fb7dc210c96
    Author: Tony Cook <>
    Date:   Tue Sep 27 00:08:11 2011 +1000
        add i_io_gets()
    commit f1d7a30ae3376dcacf337faa3b172b135b8a85c2
    Author: Tony Cook <>
    Date:   Mon Sep 26 23:18:20 2011 +1000
        remove more unused code, including unused variables
    commit 9d4eea2b2d0725466162ee2008faa52825ea68ca
    Author: Tony Cook <>
    Date:   Mon Sep 26 21:46:29 2011 +1000
        final coverage tests
    commit 28a5ceb962c54f01d68115c8ce23cf47c9c33742
    Author: Tony Cook <>
    Date:   Thu Sep 22 22:36:01 2011 +1000
        WIP, more coverage and fixes
    commit 5a426928bc533e39c09acc795803a74054b7c779
    Author: Tony Cook <>
    Date:   Thu Sep 22 22:35:43 2011 +1000
        we almost always want symbols with our coverage, so enable them
    commit 7cfdd0cfde8b63760fb1817812ca53cbbb479b5b
    Author: Tony Cook <>
    Date:   Thu Sep 22 22:35:07 2011 +1000
        actually store the character in the i_io_putc() macro
    commit 676e43d395e0928ac46e3c6763169186c094fdcd
    Author: Tony Cook <>
    Date:   Thu Sep 22 22:32:42 2011 +1000
        remove the 0 size check, since i_io_peekn() itself does the check
        This ensures we can test the underlying function's behaviour
    commit 6175b9ef623b8c627b700f186b31937813c94f7f
    Author: Tony Cook <>
    Date:   Thu Sep 22 22:30:56 2011 +1000
        make i_io_set_buffered() into a real function
        since it needs to flush
    commit 3fc2c6587a5dbbaa7ef4ab84a1c83decc9f15bf8
    Author: Tony Cook <>
    Date:   Sat Sep 17 15:06:27 2011 +1000
        more coverage, some fixes, still WIP
    commit ddb433c610b9bc1e5588fcb7276b4f1916a09e8f
    Author: Tony Cook <>
    Date:   Sat Sep 17 13:16:00 2011 +1000
        improve i_io_peekn() / i_io_read_fill() interaction
        a peekn() for a small amount no longer limits a following peekn() for
        a larger amount
        it also handles partly consumed input buffers
    commit 830b5c652aa665b4ffe70c03b991ed53c18ea671
    Author: Tony Cook <>
    Date:   Sat Sep 17 00:24:55 2011 +1000
        WIP, working on coverage tests
    commit 1987245122d4a6eae095592f995786ad6097ed21
    Author: Tony Cook <>
    Date:   Wed Sep 14 20:47:49 2011 +1000
        update iobuf todos
    commit 2dbbb48e431d9c4f085330224e9a975be61f8a4c
    Author: Tony Cook <>
    Date:   Tue Sep 13 11:28:36 2011 +1000
        make the error message checks unbuffered, update the grey32 test image
        since test_image_double() has changed
    commit 84dc488a323bcded457d4f338b2636db59d51f03
    Author: Tony Cook <>
    Date:   Tue Sep 13 11:28:24 2011 +1000
        improve error checking a bit
    commit 617340662609eaf1ddf385758c7729e3fa8d37bb
    Author: Tony Cook <>
    Date:   Mon Sep 12 22:37:42 2011 +1000
        WIP commit
    commit 342167b92f30c4a1f8f94b16f85875c866383263
    Author: Tony Cook <>
    Date:   Sat Sep 10 15:07:00 2011 +1000
        remove buffering from the PNM reader
    commit 8c2fe37a2612a261cc53bcb955be11bd31974770
    Author: Tony Cook <>
    Date:   Sat Sep 10 14:00:10 2011 +1000
        remove buffering from the callback IO object implementation
           - the callback IO object did its own buffering, controlled by the
             maxbuffer parameter supplied to the read() and write() methods.
             This buffering has been removed, to avoid redundancy with the
             common io_glue buffering.
           - the callback IO object new tests the result of calling the close
             callback, which should return true for success.
    commit 2ffd623b6849096a3bd1ea9a0708c2f45d1824bf
    Author: Tony Cook <>
    Date:   Sat Sep 10 13:13:46 2011 +1000
        change notes + todo for the iobuf changes
    commit dce56aa69674ff522c0d617e84e1daa965c00775
    Author: Tony Cook <>
    Date:   Sat Sep 10 00:01:23 2011 +1000
        buffering working
        - some file handlers don't check the result of i_io_close(), test that
          (with a close callback handler), fix that
        - remove other buffering implementations where possible, the callback
          code (Imager.xs) and pnm.c in particular
        - allow _get_writer() to produce unbuffered writers
        - add coverage tests for the buffering code
    commit d45c6298a616a4481def0a1abfe0e91a26ef29b8
    Author: Tony Cook <>
    Date:   Tue Aug 30 00:15:12 2011 +1000
        reorganize the io_glue types for the upcoming buffering changes
    commit e080fa60bd5db126d4e2620131db4017cfe7a98c
    Author: Tony Cook <>
    Date:   Tue Aug 30 00:14:26 2011 +1000
        eliminate the final remnants of io_glue_commit_types()
        it's not part of the API and has been a no-op for years

Aug 08, 2011

  1. Tony Cook

    switch to using size_t and i_img_dim strictly

    Also, use double instead of float where the value is used in
    calculating a co-ordinate, since float may not be able to represent an
    image ordinate with sufficient precision

Jun 14, 2011

  1. Tony Cook

    correct the API i_get_image_file_limits() macro

  2. Tony Cook

    report the mismatched version numbers if the Imager API version doesn…

    …'t match

Sep 25, 2010

  1. Move freetype 2 support into its own module

    lots of other changes in support of that
    Tony Cook authored

Sep 16, 2010

  1. move win32 font support in a new directory, and use Imager::Probe

    change i_utf8_advance to accept the working length as a size_t and
    propagate that change through anything that uses it
    Tony Cook authored

Aug 31, 2010

  1. move JPEG into it's own module

    Tony Cook authored

Aug 25, 2010

  1. move TIFF into its own module

    Tony Cook authored

Dec 03, 2007

  1. - the hardinvert filter no-longer inverts the alpha channel.
     - the hardinvert filter now supports large samples
    Tony Cook authored

Nov 26, 2007

  1. merge in tiff re-work branch

    Tony Cook authored

Jul 31, 2007

  1. - Finished/rewrote Arnar's old SGI RGB file format support, so Imager

       now has full SGI RGB image format, including RLE and 16-bit/sample
     - logging functions are now available in the API
     - the convert() method now returns an image of the same sample size as
       the source image.
    Tony Cook authored

Jun 27, 2006

  1. implement a flood_fill that stops at a given color rather than filling

    a region of the color at the start poiint.
    from perl you can call flood_fill() with a border parameter to specify
    a fill to border.
    from the API call the i_flood_fill_border() or i_flood_cfill_border()
    Tony Cook authored

Jun 26, 2006

  1. add support for file write plugins

    fix write_multi() writing to scalars
    add support for writing to ICO/CUR image files
    added file limit check functions to the API
    Tony Cook authored

Feb 21, 2006

  1. - added version/level to the API function table structure

    Tony Cook authored

Feb 17, 2006

  1. - more memory allocation integer overflow auditing

    - IM_DEBUG_MALLOC wasn't interacting well with the API
    Tony Cook authored

Jan 10, 2006

  1. - start of external Imager API access:

      - rename headers to avoid conflicts:
        - image.h to imager.h
        - imagei.h to imageri.h
        - datatypes.h to imdatatypes.h
        - config.h to imconfig.h (created by Makefile.PL)
      - moved all public types defined in imager.h to imdatatypes.h
      - supply the PM parameter to WriteMakefile(), to install headers 
        under Imager/include, and the Imager typemap in Imager/typemap.
        We scan the MANIFEST for files to add to PM.
      - add "i_" prefix on some functions useful as public at the C level.
      - moved the typedefs that support the typemap from Imager.xs to 
      - set the global callbacks hook in the Imager.xs BOOT section
      - API cleanup:
        - define i_tags_set(), i_tags_setn() - we might not allow multiple 
          values for a tag in the future
        - i_copy() now returns a new image instead of doing horrible inplace
          things to an existing image
        - provide actual functions for all of the macros we define in imager.h
          so we can put them in the global callbacks structure
      - define global functions structure (imexttypes.h)
        and initialize it (imext.c)
      - add API include header with macros to setup the define and
        initialize the local callbacks pointer, and macros to call the API
      - build Imager::APIRef from C sources, including updating the sources
        to include documentation for each API function.
      - convert dyntest and mandelbrot dynfilts into XS modules (too easy)
      - simple Imager::CountColor example
    - support Inline::C :
      - typemap changes to accept Imager or Imager::ImgRaw objects as 
        image parameters
      - define Imager output type for trivial cases of returning an i_img as
        a full Imager object
      - Inline WITH hook to filter Imager XS types into types Inline::C can
        accept, supply appropriate headers and initialization.
      - test script t/t82inline.t
    - try to use XSLoader instead of DynaLoader (but fallback if necessary)
    - paste() can now paste a subset of the source image.
    - paste() now has better tests
    - paste() should now be faster for larger pastes
    Tony Cook authored
Something went wrong with that request. Please try again.