[poppler] poppler/goo: FixedPoint.cc, NONE, 1.1 FixedPoint.h, NONE,
1.1 Makefile.am, 1.2, 1.3
Marco Pesenti Gritti
marco at freedesktop.org
Fri Sep 16 11:29:20 PDT 2005
- Previous message: [poppler] poppler: ChangeLog,1.199,1.200
- Next message: [poppler] poppler/poppler: XpdfPluginAPI.cc, NONE,
1.1 XpdfPluginAPI.h, NONE, 1.1 SecurityHandler.cc, NONE,
1.1 SecurityHandler.h, NONE, 1.1 DCTStream.h, 1.4,
1.5 Decrypt.cc, 1.2, 1.3 Decrypt.h, 1.1.1.1, 1.2 FlateStream.h,
1.1, 1.2 GlobalParams.cc, 1.8, 1.9 GlobalParams.h, 1.3,
1.4 Makefile.am, 1.11, 1.12 PDFDoc.cc, 1.5, 1.6 PDFDoc.h, 1.3,
1.4 Parser.cc, 1.1.1.1, 1.2 Parser.h, 1.1.1.1, 1.2 Stream.cc,
1.4, 1.5 Stream.h, 1.4, 1.5 XRef.cc, 1.4, 1.5 XRef.h, 1.2,
1.3 poppler-config.h.in, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvs/poppler/poppler/goo
In directory gabe:/tmp/cvs-serv4244/goo
Modified Files:
Makefile.am
Added Files:
FixedPoint.cc FixedPoint.h
Log Message:
2005-09-16 Marco Pesenti Gritti <mpg at redhat.com>
* goo/Makefile.am:
* poppler/DCTStream.h:
* poppler/Decrypt.cc:
* poppler/Decrypt.h:
* poppler/FlateStream.h:
* poppler/GlobalParams.cc:
* poppler/GlobalParams.h:
* poppler/Makefile.am:
* poppler/PDFDoc.cc:
* poppler/PDFDoc.h:
* poppler/Parser.cc:
* poppler/Parser.h:
* poppler/Stream.cc:
* poppler/Stream.h:
* poppler/XRef.cc:
* poppler/XRef.h:
* poppler/poppler-config.h.in:
Merge security plugins support from xpdf 3.01
--- NEW FILE: FixedPoint.cc ---
//========================================================================
//
// FixedPoint.cc
//
// Fixed point type, with C++ operators.
//
// Copyright 2004 Glyph & Cog, LLC
//
//========================================================================
#include <config.h>
#if USE_FIXEDPOINT
#ifdef USE_GCC_PRAGMAS
#pragma implementation
#endif
#include "FixedPoint.h"
FixedPoint FixedPoint::sqrt(FixedPoint x) {
FixedPoint y0, y1, z;
if (x.val <= 0) {
y1.val = 0;
} else {
y1.val = x.val >> 1;
do {
y0.val = y1.val;
z = x / y0;
y1.val = (y0.val + z.val) >> 1;
} while (::abs(y0.val - y1.val) > 1);
}
return y1;
}
//~ this is not very accurate
FixedPoint FixedPoint::pow(FixedPoint x, FixedPoint y) {
FixedPoint t, t2, lnx0, lnx, z0, z;
int d, i;
if (y.val <= 0) {
z.val = 0;
} else {
// y * ln(x)
t = (x - 1) / (x + 1);
t2 = t * t;
d = 1;
lnx = 0;
do {
lnx0 = lnx;
lnx += t / d;
t *= t2;
d += 2;
} while (::abs(lnx.val - lnx0.val) > 2);
lnx.val <<= 1;
t = y * lnx;
// exp(y * ln(x))
t2 = t;
d = 1;
i = 1;
z = 1;
do {
z0 = z;
z += t2 / d;
t2 *= t;
++i;
d *= i;
} while (::abs(z.val - z0.val) > 2 && d < (1 << fixptShift));
}
return z;
}
int FixedPoint::mul(int x, int y) {
#if 1 //~tmp
return ((FixPtInt64)x * y) >> fixptShift;
#else
int ah0, ah, bh, al, bl;
ah0 = x & fixptMaskH;
ah = x >> fixptShift;
al = x - ah0;
bh = y >> fixptShift;
bl = y - (bh << fixptShift);
return ah0 * bh + ah * bl + al * bh + ((al * bl) >> fixptShift);
#endif
}
int FixedPoint::div(int x, int y) {
#if 1 //~tmp
return ((FixPtInt64)x << fixptShift) / y;
#else
#endif
}
#endif // USE_FIXEDPOINT
--- NEW FILE: FixedPoint.h ---
//========================================================================
//
// FixedPoint.h
//
// Fixed point type, with C++ operators.
//
// Copyright 2004 Glyph & Cog, LLC
//
//========================================================================
#ifndef FIXEDPOINT_H
#define FIXEDPOINT_H
#include <aconf.h>
#if USE_FIXEDPOINT
#ifdef USE_GCC_PRAGMAS
#pragma interface
#endif
#include <stdio.h>
#include <stdlib.h>
#define fixptShift 16
#define fixptMaskL ((1 << fixptShift) - 1)
#define fixptMaskH (~fixptMaskL)
typedef long long FixPtInt64;
class FixedPoint {
public:
FixedPoint() { val = 0; }
FixedPoint(const FixedPoint &x) { val = x.val; }
FixedPoint(double x) { val = (int)(x * (1 << fixptShift) + 0.5); }
FixedPoint(int x) { val = x << fixptShift; }
FixedPoint(long x) { val = x << fixptShift; }
operator float()
{ return (float) val * ((float)1 / (float)(1 << fixptShift)); }
operator double()
{ return (double) val * (1.0 / (double)(1 << fixptShift)); }
operator int()
{ return val >> fixptShift; }
int getRaw() { return val; }
FixedPoint operator =(FixedPoint x) { val = x.val; return *this; }
int operator ==(FixedPoint x) { return val == x.val; }
int operator ==(double x) { return *this == (FixedPoint)x; }
int operator ==(int x) { return *this == (FixedPoint)x; }
int operator ==(long x) { return *this == (FixedPoint)x; }
int operator !=(FixedPoint x) { return val != x.val; }
int operator !=(double x) { return *this != (FixedPoint)x; }
int operator !=(int x) { return *this != (FixedPoint)x; }
int operator !=(long x) { return *this != (FixedPoint)x; }
int operator <(FixedPoint x) { return val < x.val; }
int operator <(double x) { return *this < (FixedPoint)x; }
int operator <(int x) { return *this < (FixedPoint)x; }
int operator <(long x) { return *this < (FixedPoint)x; }
int operator <=(FixedPoint x) { return val <= x.val; }
int operator <=(double x) { return *this <= (FixedPoint)x; }
int operator <=(int x) { return *this <= (FixedPoint)x; }
int operator <=(long x) { return *this <= (FixedPoint)x; }
int operator >(FixedPoint x) { return val > x.val; }
int operator >(double x) { return *this > (FixedPoint)x; }
int operator >(int x) { return *this > (FixedPoint)x; }
int operator >(long x) { return *this > (FixedPoint)x; }
int operator >=(FixedPoint x) { return val >= x.val; }
int operator >=(double x) { return *this >= (FixedPoint)x; }
int operator >=(int x) { return *this >= (FixedPoint)x; }
int operator >=(long x) { return *this >= (FixedPoint)x; }
FixedPoint operator -() { return make(-val); }
FixedPoint operator +(FixedPoint x) { return make(val + x.val); }
FixedPoint operator +(double x) { return *this + (FixedPoint)x; }
FixedPoint operator +(int x) { return *this + (FixedPoint)x; }
FixedPoint operator +(long x) { return *this + (FixedPoint)x; }
FixedPoint operator +=(FixedPoint x) { val = val + x.val; return *this; }
FixedPoint operator +=(double x) { return *this += (FixedPoint)x; }
FixedPoint operator +=(int x) { return *this += (FixedPoint)x; }
FixedPoint operator +=(long x) { return *this += (FixedPoint)x; }
FixedPoint operator -(FixedPoint x) { return make(val - x.val); }
FixedPoint operator -(double x) { return *this - (FixedPoint)x; }
FixedPoint operator -(int x) { return *this - (FixedPoint)x; }
FixedPoint operator -(long x) { return *this - (FixedPoint)x; }
FixedPoint operator -=(FixedPoint x) { val = val - x.val; return *this; }
FixedPoint operator -=(double x) { return *this -= (FixedPoint)x; }
FixedPoint operator -=(int x) { return *this -= (FixedPoint)x; }
FixedPoint operator -=(long x) { return *this -= (FixedPoint)x; }
FixedPoint operator *(FixedPoint x) { return make(mul(val, x.val)); }
FixedPoint operator *(double x) { return *this * (FixedPoint)x; }
FixedPoint operator *(int x) { return *this * (FixedPoint)x; }
FixedPoint operator *(long x) { return *this * (FixedPoint)x; }
FixedPoint operator *=(FixedPoint x) { val = mul(val, x.val); return *this; }
FixedPoint operator *=(double x) { return *this *= (FixedPoint)x; }
FixedPoint operator *=(int x) { return *this *= (FixedPoint)x; }
FixedPoint operator *=(long x) { return *this *= (FixedPoint)x; }
FixedPoint operator /(FixedPoint x) { return make(div(val, x.val)); }
FixedPoint operator /(double x) { return *this / (FixedPoint)x; }
FixedPoint operator /(int x) { return *this / (FixedPoint)x; }
FixedPoint operator /(long x) { return *this / (FixedPoint)x; }
FixedPoint operator /=(FixedPoint x) { val = div(val, x.val); return *this; }
FixedPoint operator /=(double x) { return *this /= (FixedPoint)x; }
FixedPoint operator /=(int x) { return *this /= (FixedPoint)x; }
FixedPoint operator /=(long x) { return *this /= (FixedPoint)x; }
static FixedPoint abs(FixedPoint x) { return make(::abs(x.val)); }
static int floor(FixedPoint x) { return x.val >> fixptShift; }
static int ceil(FixedPoint x)
{ return (x.val & fixptMaskL) ? ((x.val >> fixptShift) + 1)
: (x.val >> fixptShift); }
static int round(FixedPoint x)
{ return (x.val + (1 << (fixptShift - 1))) >> fixptShift; }
static FixedPoint sqrt(FixedPoint x);
static FixedPoint pow(FixedPoint x, FixedPoint y);
private:
static FixedPoint make(int valA) { FixedPoint x; x.val = valA; return x; }
static int mul(int x, int y);
static int div(int x, int y);
int val; // 16.16 fixed point
};
#endif // USE_FIXEDPOINT
#endif
Index: Makefile.am
===================================================================
RCS file: /cvs/poppler/poppler/goo/Makefile.am,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- Makefile.am 29 Apr 2005 19:37:07 -0000 1.2
+++ Makefile.am 16 Sep 2005 18:29:18 -0000 1.3
@@ -10,7 +10,8 @@
gmem.h \
gtypes.h \
gmem.h \
- gfile.h
+ gfile.h \
+ FixedPoint.h
libgoo_la_SOURCES = \
gfile.cc \
@@ -19,4 +20,5 @@
GooList.cc \
GooTimer.cc \
GooString.cc \
- gmem.c
+ gmem.c \
+ FixedPoint.cc
- Previous message: [poppler] poppler: ChangeLog,1.199,1.200
- Next message: [poppler] poppler/poppler: XpdfPluginAPI.cc, NONE,
1.1 XpdfPluginAPI.h, NONE, 1.1 SecurityHandler.cc, NONE,
1.1 SecurityHandler.h, NONE, 1.1 DCTStream.h, 1.4,
1.5 Decrypt.cc, 1.2, 1.3 Decrypt.h, 1.1.1.1, 1.2 FlateStream.h,
1.1, 1.2 GlobalParams.cc, 1.8, 1.9 GlobalParams.h, 1.3,
1.4 Makefile.am, 1.11, 1.12 PDFDoc.cc, 1.5, 1.6 PDFDoc.h, 1.3,
1.4 Parser.cc, 1.1.1.1, 1.2 Parser.h, 1.1.1.1, 1.2 Stream.cc,
1.4, 1.5 Stream.h, 1.4, 1.5 XRef.cc, 1.4, 1.5 XRef.h, 1.2,
1.3 poppler-config.h.in, 1.2, 1.3
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the poppler
mailing list