~ubuntu-branches/ubuntu/vivid/ghostscript/vivid-updates

« back to all changes in this revision

Viewing changes to openjpeg/libopenjpeg/opj_intmath.h

  • Committer: Package Import Robot
  • Author(s): Till Kamppeter
  • Date: 2014-05-02 15:48:44 UTC
  • mfrom: (1.1.43)
  • Revision ID: package-import@ubuntu.com-20140502154844-c401rxx0cce8gm0q
Tags: 9.14~dfsg-0ubuntu1
* New upstream release
   - Ghostscript 9.14
   - pdfwrite now uses the same color management engine as Ghostscript
     rendering devices (by default LCMS2). This provides much better
     control over color conversion and color management generally, but
     will result in some small color differences when compared to the
     old system.
     It is no longer necessary to specify UseCIEColor (and we very much
     encourage you not to do this) or the ProcessColorModel if you want
     to convert a PDF file to a specific color space, simply set the
     ColorConversionStrategy appropriately.
     We do not expect any major problems to arise with this new code,
     but for the duration of this release a new switch -dPDFUseOldCMS
     is available which will restore the old color management. See:
     Color Conversion and Management
     Please note that due to constraints of the PDF/A-1 specification,
     the new color management does not yet apply when producing PDF/A
     files.
   - A new device 'eps2write' has been added which allows for the
     creation of EPS files using the ps2write device instead of the old
     (deprecated and removed) pswrite device. This produces
     considerably better quality EPS files than the old epswrite device
     which is now also deprecated and will be removed in a future
     release.
   - ps2write now has a feature to allow customisation of the output
     for specific devices. Please see PSDocOptions and PSPageOptions
     described in ps2ps2.htm Additional Distiller Params
   - Ghostscript now reduces memory usage when processing PDF files
     that use transparency and output is to display devices such as
     Windows display or x11 (i.e. devices that are strictly full
     framebuffer devices), and to high level vector devices that cannot
     reproduce the PDF transparency model, such as the ps2write device
     or pdfwrite when 'flattening' to PDF 1.3 or earlier
     (-dCompatibilityLevel=1.3). This uses banding (clist) files to
     render the transparent areas in bands to reduce memory use, and
     unlike the existing page level banding, this is hidden from the
     target device.
   - Ghostscript can now collect information for pages in temp files
     (in Ghostscript's clist format), then render and output pages for
     the job in arbitrary order, including normal, reverse, odd, even,
     or any order or subset of the pages. This is controlled with the
     --saved-page=___ option. (Note that this only applies to rendering
     devices, and not high level devices such as pdfwrite and
     ps2write.) See: Deferred Page Rendering
   - The Ghostscript device architecture has been extended so that,
     when rendering bands into multiple threads, it is now possible to
     perform post-processing in multiple threads, such as downscale,
     post-render halftoning, or compression. Previously, post
     processing was only possible in the single main thread. This can
     improve performance significantly.
   - Ghostscript has a new "pwgraster" output device for PWG Raster
     output
   - The CUPS device now has improved support for PPD-less printing
   - Plus the usual round of bug fixes, compatibility changes, and
     incremental improvements.
* debian/patches/020140502-0ccf329-fix-fpng-device-build-handle-shared-zlib.patch:
  Fix fpng device build handle for shared zlib (Upstream bug #695113).
* debian/patches/020130903-5ae4180-ps-interpreter-dont-interpolate-imagemask-data-for-high-level-devices.patch,
  debian/patches/020131023-ad3e3ed-handle-type-0-font-in-annotation.patch,
  debian/patches/020131127-87a7fd8-cups-pwg-raster-output-ppd-less-support.patch,
  debian/patches/020131218-5ddd13e-ps2write-dont-emit-a-page-size-change-if-the-last-request-failed.patch,
  debian/patches/020131219-d997bc4-pwgraster-output-device.patch,
  debian/patches/020140313-095ae57-ps2write-fix-missing-beginresource-comment-for-fontfile-objects.patch,
  debian/patches/020140313-5d6b18a-set-correct-portrait-landscape-orientation-on-pcl-5ce.patch,
  debian/patches/020140313-6498483-ps2write-fix-a-dsc-comment.patch,
  debian/patches/020140428-f4584b0-skip-unsupported-font-files.patch:
  Removed patches backported from upstream.
* debian/patches/020140324-b780ff0-protection-against-pxl-segfault-with-image-data-without-colorspace-info.patch,
  debian/patches/020140331-4b44b41-pxlcolor-support-jpeg-in-output.patch,
  debian/patches/020140331-41ab485-pxl-transform-deep-images-with-icc-transform-to-emit-high-level-images.patch,
  debian/patches/1002_pxl-make-dicctransform-default.patch: Refreshed with
  quilt.
* debian/symbols.common: Updated for new upstream source. Applied patch
  which dpkg-gensymbols generated for debian/libgs9.symbols to this file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
 
3
 * Copyright (c) 2002-2007, Professor Benoit Macq
 
4
 * Copyright (c) 2001-2003, David Janssens
 
5
 * Copyright (c) 2002-2003, Yannick Verschueren
 
6
 * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe
 
7
 * Copyright (c) 2005, Herve Drolon, FreeImage Team
 
8
 * All rights reserved.
 
9
 *
 
10
 * Redistribution and use in source and binary forms, with or without
 
11
 * modification, are permitted provided that the following conditions
 
12
 * are met:
 
13
 * 1. Redistributions of source code must retain the above copyright
 
14
 *    notice, this list of conditions and the following disclaimer.
 
15
 * 2. Redistributions in binary form must reproduce the above copyright
 
16
 *    notice, this list of conditions and the following disclaimer in the
 
17
 *    documentation and/or other materials provided with the distribution.
 
18
 *
 
19
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
 
20
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
21
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 
22
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 
23
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 
24
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 
25
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
26
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 
27
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
28
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
29
 * POSSIBILITY OF SUCH DAMAGE.
 
30
 */
 
31
#ifndef __INT_H
 
32
#define __INT_H
 
33
/**
 
34
@file opj_intmath.h
 
35
@brief Implementation of operations on integers (INT)
 
36
 
 
37
The functions in OPJ_INTMATH.H have for goal to realize operations on integers.
 
38
*/
 
39
 
 
40
/** @defgroup OPJ_INTMATH OPJ_INTMATH - Implementation of operations on integers */
 
41
/*@{*/
 
42
 
 
43
/** @name Exported functions (see also openjpeg.h) */
 
44
/*@{*/
 
45
/* ----------------------------------------------------------------------- */
 
46
/**
 
47
Get the minimum of two integers
 
48
@return Returns a if a < b else b
 
49
*/
 
50
static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b) {
 
51
        return a < b ? a : b;
 
52
}
 
53
 
 
54
/**
 
55
Get the minimum of two integers
 
56
@return Returns a if a < b else b
 
57
*/
 
58
static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b) {
 
59
        return a < b ? a : b;
 
60
}
 
61
 
 
62
/**
 
63
Get the maximum of two integers
 
64
@return Returns a if a > b else b
 
65
*/
 
66
static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b) {
 
67
        return (a > b) ? a : b;
 
68
}
 
69
 
 
70
/**
 
71
Get the maximum of two integers
 
72
@return Returns a if a > b else b
 
73
*/
 
74
static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32  a, OPJ_UINT32  b) {
 
75
        return (a > b) ? a : b;
 
76
}
 
77
 
 
78
/**
 
79
Clamp an integer inside an interval
 
80
@return
 
81
<ul>
 
82
<li>Returns a if (min < a < max)
 
83
<li>Returns max if (a > max)
 
84
<li>Returns min if (a < min) 
 
85
</ul>
 
86
*/
 
87
static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max) {
 
88
        if (a < min)
 
89
                return min;
 
90
        if (a > max)
 
91
                return max;
 
92
        return a;
 
93
}
 
94
/**
 
95
@return Get absolute value of integer
 
96
*/
 
97
static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a) {
 
98
        return a < 0 ? -a : a;
 
99
}
 
100
/**
 
101
Divide an integer and round upwards
 
102
@return Returns a divided by b
 
103
*/
 
104
static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b) {
 
105
        return (a + b - 1) / b;
 
106
}
 
107
 
 
108
/**
 
109
Divide an integer and round upwards
 
110
@return Returns a divided by b
 
111
*/
 
112
static INLINE OPJ_UINT32  opj_uint_ceildiv(OPJ_UINT32  a, OPJ_UINT32  b) {
 
113
        return (a + b - 1) / b;
 
114
}
 
115
 
 
116
/**
 
117
Divide an integer by a power of 2 and round upwards
 
118
@return Returns a divided by 2^b
 
119
*/
 
120
static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b) {
 
121
        return (a + (int64_t)(1 << b) - 1) >> b;
 
122
}
 
123
/**
 
124
Divide an integer by a power of 2 and round downwards
 
125
@return Returns a divided by 2^b
 
126
*/
 
127
static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b) {
 
128
        return a >> b;
 
129
}
 
130
/**
 
131
Get logarithm of an integer and round downwards
 
132
@return Returns log2(a)
 
133
*/
 
134
static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a) {
 
135
        OPJ_INT32 l;
 
136
        for (l = 0; a > 1; l++) {
 
137
                a >>= 1;
 
138
        }
 
139
        return l;
 
140
}
 
141
/**
 
142
Get logarithm of an integer and round downwards
 
143
@return Returns log2(a)
 
144
*/
 
145
static INLINE OPJ_UINT32  opj_uint_floorlog2(OPJ_UINT32  a) {
 
146
        OPJ_UINT32  l;
 
147
        for (l = 0; a > 1; ++l)
 
148
        {
 
149
                a >>= 1;
 
150
        }
 
151
        return l;
 
152
}
 
153
 
 
154
/**
 
155
Multiply two fixed-precision rational numbers.
 
156
@param a
 
157
@param b
 
158
@return Returns a * b
 
159
*/
 
160
static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b) {
 
161
    OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
 
162
    temp += temp & 4096;
 
163
    return (OPJ_INT32) (temp >> 13) ;
 
164
}
 
165
 
 
166
/* ----------------------------------------------------------------------- */
 
167
/*@}*/
 
168
 
 
169
/*@}*/
 
170
 
 
171
#endif