Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
a141f8a3
Kaydet (Commit)
a141f8a3
authored
Ara 20, 1996
tarafından
Roger E. Masse
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Renamed.
üst
470dcbf8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
625 additions
and
615 deletions
+625
-615
imageop.c
Modules/imageop.c
+625
-615
No files found.
Modules/imageop.c
Dosyayı görüntüle @
a141f8a3
...
@@ -35,715 +35,725 @@ PERFORMANCE OF THIS SOFTWARE.
...
@@ -35,715 +35,725 @@ PERFORMANCE OF THIS SOFTWARE.
#define signed
#define signed
#endif
#endif
#include "allobjects.h"
#include "Python.h"
#include "modsupport.h"
#define CHARP(cp, xmax, x, y) ((char *)(cp+y*xmax+x))
#define CHARP(cp, xmax, x, y) ((char *)(cp+y*xmax+x))
#define SHORTP(cp, xmax, x, y) ((short *)(cp+2*(y*xmax+x)))
#define SHORTP(cp, xmax, x, y) ((short *)(cp+2*(y*xmax+x)))
#define LONGP(cp, xmax, x, y) ((long *)(cp+4*(y*xmax+x)))
#define LONGP(cp, xmax, x, y) ((long *)(cp+4*(y*xmax+x)))
static
o
bject
*
ImageopError
;
static
PyO
bject
*
ImageopError
;
static
o
bject
*
static
PyO
bject
*
imageop_crop
(
self
,
args
)
imageop_crop
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
char
*
cp
,
*
ncp
;
char
*
cp
,
*
ncp
;
short
*
nsp
;
short
*
nsp
;
long
*
nlp
;
long
*
nlp
;
int
len
,
size
,
x
,
y
,
newx1
,
newx2
,
newy1
,
newy2
;
int
len
,
size
,
x
,
y
,
newx1
,
newx2
,
newy1
,
newy2
;
int
ix
,
iy
,
xstep
,
ystep
;
int
ix
,
iy
,
xstep
,
ystep
;
object
*
rv
;
PyObject
*
rv
;
if
(
!
getargs
(
args
,
"(s#iiiiiii)"
,
&
cp
,
&
len
,
&
size
,
&
x
,
&
y
,
if
(
!
PyArg_Parse
(
args
,
"(s#iiiiiii)"
,
&
cp
,
&
len
,
&
size
,
&
x
,
&
y
,
&
newx1
,
&
newy1
,
&
newx2
,
&
newy2
)
)
&
newx1
,
&
newy1
,
&
newx2
,
&
newy2
)
)
return
0
;
return
0
;
if
(
size
!=
1
&&
size
!=
2
&&
size
!=
4
)
{
if
(
size
!=
1
&&
size
!=
2
&&
size
!=
4
)
{
err_setstr
(
ImageopError
,
"Size should be 1, 2 or 4"
);
PyErr_SetString
(
ImageopError
,
"Size should be 1, 2 or 4"
);
return
0
;
return
0
;
}
}
if
(
len
!=
size
*
x
*
y
)
{
if
(
len
!=
size
*
x
*
y
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
xstep
=
(
newx1
<
newx2
)
?
1
:
-
1
;
xstep
=
(
newx1
<
newx2
)
?
1
:
-
1
;
ystep
=
(
newy1
<
newy2
)
?
1
:
-
1
;
ystep
=
(
newy1
<
newy2
)
?
1
:
-
1
;
rv
=
newsizedstringobject
(
NULL
,
rv
=
PyString_FromStringAndSize
(
NULL
,
(
abs
(
newx2
-
newx1
)
+
1
)
*
(
abs
(
newy2
-
newy1
)
+
1
)
*
size
);
(
abs
(
newx2
-
newx1
)
+
1
)
*
(
abs
(
newy2
-
newy1
)
+
1
)
*
size
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
char
*
)
getstringvalue
(
rv
);
ncp
=
(
char
*
)
PyString_AsString
(
rv
);
nsp
=
(
short
*
)
ncp
;
nsp
=
(
short
*
)
ncp
;
nlp
=
(
long
*
)
ncp
;
nlp
=
(
long
*
)
ncp
;
newy2
+=
ystep
;
newy2
+=
ystep
;
newx2
+=
xstep
;
newx2
+=
xstep
;
for
(
iy
=
newy1
;
iy
!=
newy2
;
iy
+=
ystep
)
{
for
(
iy
=
newy1
;
iy
!=
newy2
;
iy
+=
ystep
)
{
for
(
ix
=
newx1
;
ix
!=
newx2
;
ix
+=
xstep
)
{
for
(
ix
=
newx1
;
ix
!=
newx2
;
ix
+=
xstep
)
{
if
(
iy
<
0
||
iy
>=
y
||
ix
<
0
||
ix
>=
x
)
{
if
(
iy
<
0
||
iy
>=
y
||
ix
<
0
||
ix
>=
x
)
{
if
(
size
==
1
)
*
ncp
++
=
0
;
if
(
size
==
1
)
else
*
nlp
++
=
0
;
*
ncp
++
=
0
;
}
else
{
else
if
(
size
==
1
)
*
ncp
++
=
*
CHARP
(
cp
,
x
,
ix
,
iy
);
*
nlp
++
=
0
;
else
if
(
size
==
2
)
*
nsp
++
=
*
SHORTP
(
cp
,
x
,
ix
,
iy
);
}
else
{
else
*
nlp
++
=
*
LONGP
(
cp
,
x
,
ix
,
iy
);
if
(
size
==
1
)
}
*
ncp
++
=
*
CHARP
(
cp
,
x
,
ix
,
iy
);
}
else
if
(
size
==
2
)
}
*
nsp
++
=
*
SHORTP
(
cp
,
x
,
ix
,
iy
);
return
rv
;
else
*
nlp
++
=
*
LONGP
(
cp
,
x
,
ix
,
iy
);
}
}
}
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_scale
(
self
,
args
)
imageop_scale
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
char
*
cp
,
*
ncp
;
char
*
cp
,
*
ncp
;
short
*
nsp
;
short
*
nsp
;
long
*
nlp
;
long
*
nlp
;
int
len
,
size
,
x
,
y
,
newx
,
newy
;
int
len
,
size
,
x
,
y
,
newx
,
newy
;
int
ix
,
iy
;
int
ix
,
iy
;
int
oix
,
oiy
;
int
oix
,
oiy
;
object
*
rv
;
PyObject
*
rv
;
if
(
!
getargs
(
args
,
"(s#iiiii)"
,
&
cp
,
&
len
,
&
size
,
&
x
,
&
y
,
&
newx
,
&
newy
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#iiiii)"
,
return
0
;
&
cp
,
&
len
,
&
size
,
&
x
,
&
y
,
&
newx
,
&
newy
)
)
return
0
;
if
(
size
!=
1
&&
size
!=
2
&&
size
!=
4
)
{
err_setstr
(
ImageopError
,
"Size should be 1, 2 or 4"
);
if
(
size
!=
1
&&
size
!=
2
&&
size
!=
4
)
{
return
0
;
PyErr_SetString
(
ImageopError
,
"Size should be 1, 2 or 4"
);
}
return
0
;
if
(
len
!=
size
*
x
*
y
)
{
}
err_setstr
(
ImageopError
,
"String has incorrect length"
);
if
(
len
!=
size
*
x
*
y
)
{
return
0
;
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
}
return
0
;
}
rv
=
newsizedstringobject
(
NULL
,
newx
*
newy
*
size
);
if
(
rv
==
0
)
rv
=
PyString_FromStringAndSize
(
NULL
,
newx
*
newy
*
size
);
return
0
;
if
(
rv
==
0
)
ncp
=
(
char
*
)
getstringvalue
(
rv
);
return
0
;
nsp
=
(
short
*
)
ncp
;
ncp
=
(
char
*
)
PyString_AsString
(
rv
);
nlp
=
(
long
*
)
ncp
;
nsp
=
(
short
*
)
ncp
;
for
(
iy
=
0
;
iy
<
newy
;
iy
++
)
{
nlp
=
(
long
*
)
ncp
;
for
(
ix
=
0
;
ix
<
newx
;
ix
++
)
{
for
(
iy
=
0
;
iy
<
newy
;
iy
++
)
{
oix
=
ix
*
x
/
newx
;
for
(
ix
=
0
;
ix
<
newx
;
ix
++
)
{
oiy
=
iy
*
y
/
newy
;
oix
=
ix
*
x
/
newx
;
if
(
size
==
1
)
*
ncp
++
=
*
CHARP
(
cp
,
x
,
oix
,
oiy
);
oiy
=
iy
*
y
/
newy
;
else
if
(
size
==
2
)
*
nsp
++
=
*
SHORTP
(
cp
,
x
,
oix
,
oiy
);
if
(
size
==
1
)
else
*
nlp
++
=
*
LONGP
(
cp
,
x
,
oix
,
oiy
);
*
ncp
++
=
*
CHARP
(
cp
,
x
,
oix
,
oiy
);
}
else
if
(
size
==
2
)
}
*
nsp
++
=
*
SHORTP
(
cp
,
x
,
oix
,
oiy
);
return
rv
;
else
*
nlp
++
=
*
LONGP
(
cp
,
x
,
oix
,
oiy
);
}
}
return
rv
;
}
}
/* Note: this routine can use a bit of optimizing */
/* Note: this routine can use a bit of optimizing */
static
o
bject
*
static
PyO
bject
*
imageop_tovideo
(
self
,
args
)
imageop_tovideo
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
maxx
,
maxy
,
x
,
y
,
len
;
int
maxx
,
maxy
,
x
,
y
,
len
;
int
i
;
int
i
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
int
width
;
int
width
;
o
bject
*
rv
;
PyO
bject
*
rv
;
if
(
!
getargs
(
args
,
"(s#iii)"
,
&
cp
,
&
len
,
&
width
,
&
maxx
,
&
maxy
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#iii)"
,
&
cp
,
&
len
,
&
width
,
&
maxx
,
&
maxy
)
)
return
0
;
return
0
;
if
(
width
!=
1
&&
width
!=
4
)
{
if
(
width
!=
1
&&
width
!=
4
)
{
err_setstr
(
ImageopError
,
"Size should be 1 or 4"
);
PyErr_SetString
(
ImageopError
,
"Size should be 1 or 4"
);
return
0
;
return
0
;
}
}
if
(
maxx
*
maxy
*
width
!=
len
)
{
if
(
maxx
*
maxy
*
width
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
len
);
rv
=
PyString_FromStringAndSize
(
NULL
,
len
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
if
(
width
==
1
)
{
if
(
width
==
1
)
{
memcpy
(
ncp
,
cp
,
maxx
);
/* Copy first line */
memcpy
(
ncp
,
cp
,
maxx
);
/* Copy first line */
ncp
+=
maxx
;
ncp
+=
maxx
;
for
(
y
=
1
;
y
<
maxy
;
y
++
)
{
/* Interpolate other lines */
for
(
y
=
1
;
y
<
maxy
;
y
++
)
{
/* Interpolate other lines */
for
(
x
=
0
;
x
<
maxx
;
x
++
)
{
for
(
x
=
0
;
x
<
maxx
;
x
++
)
{
i
=
y
*
maxx
+
x
;
i
=
y
*
maxx
+
x
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
maxx
])
>>
1
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
maxx
])
>>
1
;
}
}
}
}
}
else
{
}
else
{
memcpy
(
ncp
,
cp
,
maxx
*
4
);
/* Copy first line */
memcpy
(
ncp
,
cp
,
maxx
*
4
);
/* Copy first line */
ncp
+=
maxx
*
4
;
ncp
+=
maxx
*
4
;
for
(
y
=
1
;
y
<
maxy
;
y
++
)
{
/* Interpolate other lines */
for
(
y
=
1
;
y
<
maxy
;
y
++
)
{
/* Interpolate other lines */
for
(
x
=
0
;
x
<
maxx
;
x
++
)
{
for
(
x
=
0
;
x
<
maxx
;
x
++
)
{
i
=
(
y
*
maxx
+
x
)
*
4
+
1
;
i
=
(
y
*
maxx
+
x
)
*
4
+
1
;
*
ncp
++
=
0
;
/* Skip alfa comp */
*
ncp
++
=
0
;
/* Skip alfa comp */
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
i
++
;
i
++
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
i
++
;
i
++
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
*
ncp
++
=
((
int
)
cp
[
i
]
+
(
int
)
cp
[
i
-
4
*
maxx
])
>>
1
;
}
}
}
}
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey2mono
(
self
,
args
)
imageop_grey2mono
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
tres
,
x
,
y
,
len
;
int
tres
,
x
,
y
,
len
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
ovalue
;
unsigned
char
ovalue
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
bit
;
int
i
,
bit
;
if
(
!
getargs
(
args
,
"(s#iii)"
,
&
cp
,
&
len
,
&
x
,
&
y
,
&
tres
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#iii)"
,
&
cp
,
&
len
,
&
x
,
&
y
,
&
tres
)
)
return
0
;
return
0
;
if
(
x
*
y
!=
len
)
{
if
(
x
*
y
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
(
len
+
7
)
/
8
);
rv
=
PyString_FromStringAndSize
(
NULL
,
(
len
+
7
)
/
8
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
bit
=
0x80
;
bit
=
0x80
;
ovalue
=
0
;
ovalue
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
if
(
(
int
)
cp
[
i
]
>
tres
)
if
(
(
int
)
cp
[
i
]
>
tres
)
ovalue
|=
bit
;
ovalue
|=
bit
;
bit
>>=
1
;
bit
>>=
1
;
if
(
bit
==
0
)
{
if
(
bit
==
0
)
{
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
bit
=
0x80
;
bit
=
0x80
;
ovalue
=
0
;
ovalue
=
0
;
}
}
}
}
if
(
bit
!=
0x80
)
if
(
bit
!=
0x80
)
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey2grey4
(
self
,
args
)
imageop_grey2grey4
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
;
int
x
,
y
,
len
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
ovalue
;
unsigned
char
ovalue
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
;
int
i
;
int
pos
;
int
pos
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
if
(
x
*
y
!=
len
)
{
if
(
x
*
y
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
(
len
+
1
)
/
2
);
rv
=
PyString_FromStringAndSize
(
NULL
,
(
len
+
1
)
/
2
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
pos
=
0
;
pos
=
0
;
ovalue
=
0
;
ovalue
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
ovalue
|=
((
int
)
cp
[
i
]
&
0xf0
)
>>
pos
;
ovalue
|=
((
int
)
cp
[
i
]
&
0xf0
)
>>
pos
;
pos
+=
4
;
pos
+=
4
;
if
(
pos
==
8
)
{
if
(
pos
==
8
)
{
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
ovalue
=
0
;
ovalue
=
0
;
pos
=
0
;
pos
=
0
;
}
}
}
}
if
(
pos
!=
0
)
if
(
pos
!=
0
)
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey2grey2
(
self
,
args
)
imageop_grey2grey2
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
;
int
x
,
y
,
len
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
ovalue
;
unsigned
char
ovalue
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
;
int
i
;
int
pos
;
int
pos
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
if
(
x
*
y
!=
len
)
{
if
(
x
*
y
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
(
len
+
3
)
/
4
);
rv
=
PyString_FromStringAndSize
(
NULL
,
(
len
+
3
)
/
4
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
pos
=
0
;
pos
=
0
;
ovalue
=
0
;
ovalue
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
ovalue
|=
((
int
)
cp
[
i
]
&
0xc0
)
>>
pos
;
ovalue
|=
((
int
)
cp
[
i
]
&
0xc0
)
>>
pos
;
pos
+=
2
;
pos
+=
2
;
if
(
pos
==
8
)
{
if
(
pos
==
8
)
{
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
ovalue
=
0
;
ovalue
=
0
;
pos
=
0
;
pos
=
0
;
}
}
}
}
if
(
pos
!=
0
)
if
(
pos
!=
0
)
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_dither2mono
(
self
,
args
)
imageop_dither2mono
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
sum
,
x
,
y
,
len
;
int
sum
,
x
,
y
,
len
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
ovalue
;
unsigned
char
ovalue
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
bit
;
int
i
,
bit
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
if
(
x
*
y
!=
len
)
{
if
(
x
*
y
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
(
len
+
7
)
/
8
);
rv
=
PyString_FromStringAndSize
(
NULL
,
(
len
+
7
)
/
8
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
bit
=
0x80
;
bit
=
0x80
;
ovalue
=
0
;
ovalue
=
0
;
sum
=
0
;
sum
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
sum
+=
cp
[
i
];
sum
+=
cp
[
i
];
if
(
sum
>=
256
)
{
if
(
sum
>=
256
)
{
sum
-=
256
;
sum
-=
256
;
ovalue
|=
bit
;
ovalue
|=
bit
;
}
}
bit
>>=
1
;
bit
>>=
1
;
if
(
bit
==
0
)
{
if
(
bit
==
0
)
{
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
bit
=
0x80
;
bit
=
0x80
;
ovalue
=
0
;
ovalue
=
0
;
}
}
}
}
if
(
bit
!=
0x80
)
if
(
bit
!=
0x80
)
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_dither2grey2
(
self
,
args
)
imageop_dither2grey2
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
;
int
x
,
y
,
len
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
ovalue
;
unsigned
char
ovalue
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
;
int
i
;
int
pos
;
int
pos
;
int
sum
=
0
,
nvalue
;
int
sum
=
0
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
if
(
x
*
y
!=
len
)
{
if
(
x
*
y
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
(
len
+
3
)
/
4
);
rv
=
PyString_FromStringAndSize
(
NULL
,
(
len
+
3
)
/
4
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
pos
=
1
;
pos
=
1
;
ovalue
=
0
;
ovalue
=
0
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
for
(
i
=
0
;
i
<
len
;
i
++
)
{
sum
+=
cp
[
i
];
sum
+=
cp
[
i
];
nvalue
=
sum
&
0x180
;
nvalue
=
sum
&
0x180
;
sum
-=
nvalue
;
sum
-=
nvalue
;
ovalue
|=
nvalue
>>
pos
;
ovalue
|=
nvalue
>>
pos
;
pos
+=
2
;
pos
+=
2
;
if
(
pos
==
9
)
{
if
(
pos
==
9
)
{
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
ovalue
=
0
;
ovalue
=
0
;
pos
=
1
;
pos
=
1
;
}
}
}
}
if
(
pos
!=
0
)
if
(
pos
!=
0
)
*
ncp
++
=
ovalue
;
*
ncp
++
=
ovalue
;
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_mono2grey
(
self
,
args
)
imageop_mono2grey
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
v0
,
v1
,
x
,
y
,
len
,
nlen
;
int
v0
,
v1
,
x
,
y
,
len
,
nlen
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
bit
;
int
i
,
bit
;
if
(
!
getargs
(
args
,
"(s#iiii)"
,
&
cp
,
&
len
,
&
x
,
&
y
,
&
v0
,
&
v1
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#iiii)"
,
&
cp
,
&
len
,
&
x
,
&
y
,
&
v0
,
&
v1
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
(
nlen
+
7
)
/
8
!=
len
)
{
if
(
(
nlen
+
7
)
/
8
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
bit
=
0x80
;
bit
=
0x80
;
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
if
(
*
cp
&
bit
)
if
(
*
cp
&
bit
)
*
ncp
++
=
v1
;
*
ncp
++
=
v1
;
else
else
*
ncp
++
=
v0
;
*
ncp
++
=
v0
;
bit
>>=
1
;
bit
>>=
1
;
if
(
bit
==
0
)
{
if
(
bit
==
0
)
{
bit
=
0x80
;
bit
=
0x80
;
cp
++
;
cp
++
;
}
}
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey22grey
(
self
,
args
)
imageop_grey22grey
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
object
*
rv
;
PyObject
*
rv
;
int
i
,
pos
,
value
=
0
,
nvalue
;
int
i
,
pos
,
value
=
0
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
(
nlen
+
3
)
/
4
!=
len
)
{
if
(
(
nlen
+
3
)
/
4
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
pos
=
0
;
pos
=
0
;
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
if
(
pos
==
0
)
{
if
(
pos
==
0
)
{
value
=
*
cp
++
;
value
=
*
cp
++
;
pos
=
8
;
pos
=
8
;
}
}
pos
-=
2
;
pos
-=
2
;
nvalue
=
(
value
>>
pos
)
&
0x03
;
nvalue
=
(
value
>>
pos
)
&
0x03
;
*
ncp
++
=
nvalue
|
(
nvalue
<<
2
)
|
(
nvalue
<<
4
)
|
(
nvalue
<<
6
);
*
ncp
++
=
nvalue
|
(
nvalue
<<
2
)
|
}
(
nvalue
<<
4
)
|
(
nvalue
<<
6
);
return
rv
;
}
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey42grey
(
self
,
args
)
imageop_grey42grey
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
char
*
cp
,
*
ncp
;
unsigned
char
*
cp
,
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
pos
,
value
=
0
,
nvalue
;
int
i
,
pos
,
value
=
0
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
(
nlen
+
1
)
/
2
!=
len
)
{
if
(
(
nlen
+
1
)
/
2
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
pos
=
0
;
pos
=
0
;
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
if
(
pos
==
0
)
{
if
(
pos
==
0
)
{
value
=
*
cp
++
;
value
=
*
cp
++
;
pos
=
8
;
pos
=
8
;
}
}
pos
-=
4
;
pos
-=
4
;
nvalue
=
(
value
>>
pos
)
&
0x0f
;
nvalue
=
(
value
>>
pos
)
&
0x0f
;
*
ncp
++
=
nvalue
|
(
nvalue
<<
4
);
*
ncp
++
=
nvalue
|
(
nvalue
<<
4
);
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_rgb2rgb8
(
self
,
args
)
imageop_rgb2rgb8
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
long
*
cp
;
unsigned
long
*
cp
;
unsigned
char
*
ncp
;
unsigned
char
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
r
,
g
,
b
;
int
i
,
r
,
g
,
b
;
unsigned
long
value
,
nvalue
;
unsigned
long
value
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
nlen
*
4
!=
len
)
{
if
(
nlen
*
4
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
/* Bits in source: aaaaaaaa BBbbbbbb GGGggggg RRRrrrrr */
/* Bits in source: aaaaaaaa BBbbbbbb GGGggggg RRRrrrrr */
value
=
*
cp
++
;
value
=
*
cp
++
;
#if 0
#if 0
r = (value >> 5) & 7;
r = (value >> 5) & 7;
g = (value >> 13) & 7;
g = (value >> 13) & 7;
b = (value >> 22) & 3;
b = (value >> 22) & 3;
#else
#else
r
=
(
int
)
((
value
&
0xff
)
/
255
.
*
7
.
+
.
5
);
r
=
(
int
)
((
value
&
0xff
)
/
255
.
*
7
.
+
.
5
);
g
=
(
int
)
(((
value
>>
8
)
&
0xff
)
/
255
.
*
7
.
+
.
5
);
g
=
(
int
)
(((
value
>>
8
)
&
0xff
)
/
255
.
*
7
.
+
.
5
);
b
=
(
int
)
(((
value
>>
16
)
&
0xff
)
/
255
.
*
3
.
+
.
5
);
b
=
(
int
)
(((
value
>>
16
)
&
0xff
)
/
255
.
*
3
.
+
.
5
);
#endif
#endif
nvalue
=
(
r
<<
5
)
|
(
b
<<
3
)
|
g
;
nvalue
=
(
r
<<
5
)
|
(
b
<<
3
)
|
g
;
*
ncp
++
=
nvalue
;
*
ncp
++
=
nvalue
;
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_rgb82rgb
(
self
,
args
)
imageop_rgb82rgb
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
char
*
cp
;
unsigned
char
*
cp
;
unsigned
long
*
ncp
;
unsigned
long
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
r
,
g
,
b
;
int
i
,
r
,
g
,
b
;
unsigned
long
value
,
nvalue
;
unsigned
long
value
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
nlen
!=
len
)
{
if
(
nlen
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
*
4
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
*
4
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
long
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
long
*
)
PyString_AsString
(
rv
);
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
/* Bits in source: RRRBBGGG
/* Bits in source: RRRBBGGG
** Red and Green are multiplied by 36.5, Blue by 85
** Red and Green are multiplied by 36.5, Blue by 85
*/
*/
value
=
*
cp
++
;
value
=
*
cp
++
;
r
=
(
value
>>
5
)
&
7
;
r
=
(
value
>>
5
)
&
7
;
g
=
(
value
)
&
7
;
g
=
(
value
)
&
7
;
b
=
(
value
>>
3
)
&
3
;
b
=
(
value
>>
3
)
&
3
;
r
=
(
r
<<
5
)
|
(
r
<<
3
)
|
(
r
>>
1
);
r
=
(
r
<<
5
)
|
(
r
<<
3
)
|
(
r
>>
1
);
g
=
(
g
<<
5
)
|
(
g
<<
3
)
|
(
g
>>
1
);
g
=
(
g
<<
5
)
|
(
g
<<
3
)
|
(
g
>>
1
);
b
=
(
b
<<
6
)
|
(
b
<<
4
)
|
(
b
<<
2
)
|
b
;
b
=
(
b
<<
6
)
|
(
b
<<
4
)
|
(
b
<<
2
)
|
b
;
nvalue
=
r
|
(
g
<<
8
)
|
(
b
<<
16
);
nvalue
=
r
|
(
g
<<
8
)
|
(
b
<<
16
);
*
ncp
++
=
nvalue
;
*
ncp
++
=
nvalue
;
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_rgb2grey
(
self
,
args
)
imageop_rgb2grey
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
long
*
cp
;
unsigned
long
*
cp
;
unsigned
char
*
ncp
;
unsigned
char
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
,
r
,
g
,
b
;
int
i
,
r
,
g
,
b
;
unsigned
long
value
,
nvalue
;
unsigned
long
value
,
nvalue
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
nlen
*
4
!=
len
)
{
if
(
nlen
*
4
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
char
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
char
*
)
PyString_AsString
(
rv
);
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
value
=
*
cp
++
;
value
=
*
cp
++
;
r
=
(
value
)
&
0xff
;
r
=
(
value
)
&
0xff
;
g
=
(
value
>>
8
)
&
0xff
;
g
=
(
value
>>
8
)
&
0xff
;
b
=
(
value
>>
16
)
&
0xff
;
b
=
(
value
>>
16
)
&
0xff
;
nvalue
=
(
int
)(
0
.
30
*
r
+
0
.
59
*
g
+
0
.
11
*
b
);
nvalue
=
(
int
)(
0
.
30
*
r
+
0
.
59
*
g
+
0
.
11
*
b
);
if
(
nvalue
>
255
)
nvalue
=
255
;
if
(
nvalue
>
255
)
nvalue
=
255
;
*
ncp
++
=
nvalue
;
*
ncp
++
=
nvalue
;
}
}
return
rv
;
return
rv
;
}
}
static
o
bject
*
static
PyO
bject
*
imageop_grey2rgb
(
self
,
args
)
imageop_grey2rgb
(
self
,
args
)
o
bject
*
self
;
PyO
bject
*
self
;
o
bject
*
args
;
PyO
bject
*
args
;
{
{
int
x
,
y
,
len
,
nlen
;
int
x
,
y
,
len
,
nlen
;
unsigned
char
*
cp
;
unsigned
char
*
cp
;
unsigned
long
*
ncp
;
unsigned
long
*
ncp
;
o
bject
*
rv
;
PyO
bject
*
rv
;
int
i
;
int
i
;
unsigned
long
value
;
unsigned
long
value
;
if
(
!
getargs
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
if
(
!
PyArg_Parse
(
args
,
"(s#ii)"
,
&
cp
,
&
len
,
&
x
,
&
y
)
)
return
0
;
return
0
;
nlen
=
x
*
y
;
nlen
=
x
*
y
;
if
(
nlen
!=
len
)
{
if
(
nlen
!=
len
)
{
err_setstr
(
ImageopError
,
"String has incorrect length"
);
PyErr_SetString
(
ImageopError
,
"String has incorrect length"
);
return
0
;
return
0
;
}
}
rv
=
newsizedstringobject
(
NULL
,
nlen
*
4
);
rv
=
PyString_FromStringAndSize
(
NULL
,
nlen
*
4
);
if
(
rv
==
0
)
if
(
rv
==
0
)
return
0
;
return
0
;
ncp
=
(
unsigned
long
*
)
getstringvalue
(
rv
);
ncp
=
(
unsigned
long
*
)
PyString_AsString
(
rv
);
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
for
(
i
=
0
;
i
<
nlen
;
i
++
)
{
value
=
*
cp
++
;
value
=
*
cp
++
;
*
ncp
++
=
value
|
(
value
<<
8
)
|
(
value
<<
16
);
*
ncp
++
=
value
|
(
value
<<
8
)
|
(
value
<<
16
);
}
}
return
rv
;
return
rv
;
}
}
/*
/*
static object *
static object *
imageop_mul(self, args)
imageop_mul(self, args)
object *self;
object *self;
object *args;
object *args;
{
{
char *cp, *ncp;
char *cp, *ncp;
int len, size, x, y;
int len, size, x, y;
object *rv;
object *rv;
int i;
int i;
if ( !getargs(args, "(s#iii)", &cp, &len, &size, &x, &y) )
if ( !getargs(args, "(s#iii)", &cp, &len, &size, &x, &y) )
return 0;
return 0;
if ( size != 1 && size != 4 ) {
if ( size != 1 && size != 4 ) {
err_setstr(ImageopError, "Size should be 1 or 4");
err_setstr(ImageopError, "Size should be 1 or 4");
return 0;
return 0;
}
}
if ( len != size*x*y ) {
if ( len != size*x*y ) {
err_setstr(ImageopError, "String has incorrect length");
err_setstr(ImageopError, "String has incorrect length");
return 0;
return 0;
}
}
rv = newsizedstringobject(NULL, XXXX);
rv = newsizedstringobject(NULL, XXXX);
if ( rv == 0 )
if ( rv == 0 )
return 0;
return 0;
ncp = (char *)getstringvalue(rv);
ncp = (char *)getstringvalue(rv);
for ( i=0; i < len; i += size ) {
for ( i=0; i < len; i += size ) {
}
}
return rv;
return rv;
}
}
*/
*/
static
struct
methodlist
imageop_methods
[]
=
{
static
PyMethodDef
imageop_methods
[]
=
{
{
"crop"
,
imageop_crop
},
{
"crop"
,
imageop_crop
},
{
"scale"
,
imageop_scale
},
{
"scale"
,
imageop_scale
},
{
"grey2mono"
,
imageop_grey2mono
},
{
"grey2mono"
,
imageop_grey2mono
},
{
"grey2grey2"
,
imageop_grey2grey2
},
{
"grey2grey2"
,
imageop_grey2grey2
},
{
"grey2grey4"
,
imageop_grey2grey4
},
{
"grey2grey4"
,
imageop_grey2grey4
},
{
"dither2mono"
,
imageop_dither2mono
},
{
"dither2mono"
,
imageop_dither2mono
},
{
"dither2grey2"
,
imageop_dither2grey2
},
{
"dither2grey2"
,
imageop_dither2grey2
},
{
"mono2grey"
,
imageop_mono2grey
},
{
"mono2grey"
,
imageop_mono2grey
},
{
"grey22grey"
,
imageop_grey22grey
},
{
"grey22grey"
,
imageop_grey22grey
},
{
"grey42grey"
,
imageop_grey42grey
},
{
"grey42grey"
,
imageop_grey42grey
},
{
"tovideo"
,
imageop_tovideo
},
{
"tovideo"
,
imageop_tovideo
},
{
"rgb2rgb8"
,
imageop_rgb2rgb8
},
{
"rgb2rgb8"
,
imageop_rgb2rgb8
},
{
"rgb82rgb"
,
imageop_rgb82rgb
},
{
"rgb82rgb"
,
imageop_rgb82rgb
},
{
"rgb2grey"
,
imageop_rgb2grey
},
{
"rgb2grey"
,
imageop_rgb2grey
},
{
"grey2rgb"
,
imageop_grey2rgb
},
{
"grey2rgb"
,
imageop_grey2rgb
},
{
0
,
0
}
{
0
,
0
}
};
};
void
void
initimageop
()
initimageop
()
{
{
object
*
m
,
*
d
;
PyObject
*
m
,
*
d
;
m
=
initmodule
(
"imageop"
,
imageop_methods
);
m
=
Py_InitModule
(
"imageop"
,
imageop_methods
);
d
=
getmoduledict
(
m
);
d
=
PyModule_GetDict
(
m
);
ImageopError
=
newstringobject
(
"imageop.error"
);
ImageopError
=
PyString_FromString
(
"imageop.error"
);
if
(
ImageopError
==
NULL
||
dictinsert
(
d
,
"error"
,
ImageopError
)
)
if
(
ImageopError
==
NULL
||
fatal
(
"can't define imageop.error"
);
PyDict_SetItemString
(
d
,
"error"
,
ImageopError
)
)
Py_FatalError
(
"can't define imageop.error"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment