pikl 0.2.8-x86-mswin32 → 0.3.0-x86-mswin32
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +9 -0
- data/License.txt +0 -0
- data/Manifest.txt +17 -17
- data/README.txt +0 -0
- data/config/hoe.rb +9 -6
- data/config/requirements.rb +0 -0
- data/ext/pikl/pikl.h +617 -465
- data/ext/pikl/pikl_affine.c +38 -91
- data/ext/pikl/pikl_affine.h +0 -0
- data/ext/pikl/pikl_bitmap.c +0 -0
- data/ext/pikl/pikl_bitmap.h +0 -0
- data/ext/pikl/pikl_blur.c +4 -8
- data/ext/pikl/pikl_blur.h +0 -0
- data/ext/pikl/pikl_camera.c +218 -0
- data/ext/pikl/{pikl_effect3.h → pikl_camera.h} +2 -2
- data/ext/pikl/pikl_composite.c +175 -0
- data/ext/pikl/pikl_composite.h +12 -0
- data/ext/pikl/pikl_decrease.c +110 -45
- data/ext/pikl/pikl_decrease.h +0 -7
- data/ext/pikl/pikl_divide.c +116 -0
- data/ext/pikl/pikl_divide.h +11 -0
- data/ext/pikl/pikl_effect.c +583 -151
- data/ext/pikl/pikl_effect.h +32 -6
- data/ext/pikl/pikl_enhance.c +274 -0
- data/ext/pikl/pikl_enhance.h +20 -0
- data/ext/pikl/pikl_io.c +174 -23
- data/ext/pikl/pikl_io.h +0 -0
- data/ext/pikl/pikl_jpeg.c +0 -0
- data/ext/pikl/pikl_jpeg.h +0 -0
- data/ext/pikl/pikl_pattern.c +383 -357
- data/ext/pikl/pikl_pattern.h +0 -0
- data/ext/pikl/pikl_pixel.c +173 -0
- data/ext/pikl/{pikl_trim.h → pikl_pixel.h} +2 -2
- data/ext/pikl/pikl_png.c +0 -0
- data/ext/pikl/pikl_png.h +0 -0
- data/ext/pikl/pikl_private.h +12 -5
- data/ext/pikl/pikl_resize.c +0 -0
- data/ext/pikl/pikl_resize.h +0 -0
- data/ext/pikl/pikl_rotate.c +409 -51
- data/ext/pikl/pikl_rotate.h +8 -0
- data/ext/pikl/pikl_scrap.c +263 -483
- data/ext/pikl/pikl_scrap.h +0 -0
- data/ext/pikl/pikl_special.c +168 -0
- data/ext/pikl/{pikl_effect4.h → pikl_special.h} +2 -2
- data/ext/pikl/pikl_voronoi.c +320 -0
- data/ext/pikl/pikl_voronoi.h +37 -0
- data/lib/pikl.rb +4 -2
- data/lib/pikl/color.rb +47 -0
- data/lib/pikl/const.rb +106 -22
- data/lib/pikl/errors.rb +0 -0
- data/lib/pikl/ext.rb +115 -8
- data/lib/pikl/filter.rb +371 -0
- data/lib/pikl/image.rb +124 -117
- data/lib/pikl/pikl.dll +0 -0
- data/lib/pikl/version.rb +2 -2
- data/setup.rb +0 -0
- data/test/sample.jpg +0 -0
- data/test/test_helper.rb +0 -0
- data/test/test_pikl_image.rb +0 -14
- data/test/test_pikl_image2.rb +541 -0
- metadata +35 -23
- data/ext/pikl/decrease/fsdither.h +0 -554
- data/ext/pikl/decrease/median.c +0 -1179
- data/ext/pikl/decrease/median.h +0 -7
- data/ext/pikl/decrease/neuquan5.c +0 -563
- data/ext/pikl/decrease/neuquant.h +0 -62
- data/ext/pikl/decrease/wu.c +0 -447
- data/ext/pikl/decrease/wu.h +0 -7
- data/ext/pikl/pikl_effect2.c +0 -240
- data/ext/pikl/pikl_effect2.h +0 -55
- data/ext/pikl/pikl_effect3.c +0 -266
- data/ext/pikl/pikl_effect4.c +0 -495
- data/ext/pikl/pikl_rotate2.c +0 -312
- data/ext/pikl/pikl_rotate2.h +0 -19
- data/ext/pikl/pikl_trim.c +0 -28
data/History.txt
CHANGED
data/License.txt
CHANGED
File without changes
|
data/Manifest.txt
CHANGED
@@ -4,13 +4,6 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
config/hoe.rb
|
6
6
|
config/requirements.rb
|
7
|
-
ext/pikl/decrease/fsdither.h
|
8
|
-
ext/pikl/decrease/median.c
|
9
|
-
ext/pikl/decrease/median.h
|
10
|
-
ext/pikl/decrease/neuquan5.c
|
11
|
-
ext/pikl/decrease/neuquant.h
|
12
|
-
ext/pikl/decrease/wu.c
|
13
|
-
ext/pikl/decrease/wu.h
|
14
7
|
ext/pikl/extconf.rb
|
15
8
|
ext/pikl/pikl.h
|
16
9
|
ext/pikl/pikl_affine.c
|
@@ -19,22 +12,26 @@ ext/pikl/pikl_bitmap.c
|
|
19
12
|
ext/pikl/pikl_bitmap.h
|
20
13
|
ext/pikl/pikl_blur.c
|
21
14
|
ext/pikl/pikl_blur.h
|
15
|
+
ext/pikl/pikl_camera.c
|
16
|
+
ext/pikl/pikl_camera.h
|
17
|
+
ext/pikl/pikl_composite.c
|
18
|
+
ext/pikl/pikl_composite.h
|
22
19
|
ext/pikl/pikl_decrease.c
|
23
20
|
ext/pikl/pikl_decrease.h
|
21
|
+
ext/pikl/pikl_divide.c
|
22
|
+
ext/pikl/pikl_divide.h
|
24
23
|
ext/pikl/pikl_effect.c
|
25
24
|
ext/pikl/pikl_effect.h
|
26
|
-
ext/pikl/
|
27
|
-
ext/pikl/
|
28
|
-
ext/pikl/pikl_effect3.c
|
29
|
-
ext/pikl/pikl_effect3.h
|
30
|
-
ext/pikl/pikl_effect4.c
|
31
|
-
ext/pikl/pikl_effect4.h
|
25
|
+
ext/pikl/pikl_enhance.c
|
26
|
+
ext/pikl/pikl_enhance.h
|
32
27
|
ext/pikl/pikl_io.c
|
33
28
|
ext/pikl/pikl_io.h
|
34
29
|
ext/pikl/pikl_jpeg.c
|
35
30
|
ext/pikl/pikl_jpeg.h
|
36
31
|
ext/pikl/pikl_pattern.c
|
37
32
|
ext/pikl/pikl_pattern.h
|
33
|
+
ext/pikl/pikl_pixel.c
|
34
|
+
ext/pikl/pikl_pixel.h
|
38
35
|
ext/pikl/pikl_png.c
|
39
36
|
ext/pikl/pikl_png.h
|
40
37
|
ext/pikl/pikl_private.h
|
@@ -42,16 +39,18 @@ ext/pikl/pikl_resize.c
|
|
42
39
|
ext/pikl/pikl_resize.h
|
43
40
|
ext/pikl/pikl_rotate.c
|
44
41
|
ext/pikl/pikl_rotate.h
|
45
|
-
ext/pikl/pikl_rotate2.c
|
46
|
-
ext/pikl/pikl_rotate2.h
|
47
42
|
ext/pikl/pikl_scrap.c
|
48
43
|
ext/pikl/pikl_scrap.h
|
49
|
-
ext/pikl/
|
50
|
-
ext/pikl/
|
44
|
+
ext/pikl/pikl_special.c
|
45
|
+
ext/pikl/pikl_special.h
|
46
|
+
ext/pikl/pikl_voronoi.c
|
47
|
+
ext/pikl/pikl_voronoi.h
|
51
48
|
lib/pikl.rb
|
49
|
+
lib/pikl/color.rb
|
52
50
|
lib/pikl/const.rb
|
53
51
|
lib/pikl/errors.rb
|
54
52
|
lib/pikl/ext.rb
|
53
|
+
lib/pikl/filter.rb
|
55
54
|
lib/pikl/image.rb
|
56
55
|
lib/pikl/pikl.dll
|
57
56
|
lib/pikl/version.rb
|
@@ -59,3 +58,4 @@ setup.rb
|
|
59
58
|
test/sample.jpg
|
60
59
|
test/test_helper.rb
|
61
60
|
test/test_pikl_image.rb
|
61
|
+
test/test_pikl_image2.rb
|
data/README.txt
CHANGED
File without changes
|
data/config/hoe.rb
CHANGED
@@ -44,13 +44,16 @@ class Hoe
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def spec= s
|
47
|
-
|
48
|
-
if
|
49
|
-
|
50
|
-
|
51
|
-
|
47
|
+
|
48
|
+
if s != nil
|
49
|
+
if PACKAGE_PLATFORM =~ /mswin32/
|
50
|
+
s.files = s.files.reject! {|f| f =~ /extconf\.rb/ }
|
51
|
+
else
|
52
|
+
s.files = s.files.reject! {|f| f =~ /pikl\.dll/ }
|
53
|
+
end
|
54
|
+
@spec = s
|
52
55
|
end
|
53
|
-
|
56
|
+
|
54
57
|
end
|
55
58
|
end
|
56
59
|
|
data/config/requirements.rb
CHANGED
File without changes
|
data/ext/pikl/pikl.h
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
-
|
2
|
-
ImageLibrary 'pikl'
|
3
|
-
author: soe(soezimaster@gmail.com)
|
4
|
-
date: 2008.4
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
//=============================================================================
|
2
|
+
// ImageLibrary 'pikl'
|
3
|
+
// author: soe(soezimaster@gmail.com)
|
4
|
+
// date: 2008.4
|
5
|
+
// update: 2008.11
|
6
|
+
// thanks.
|
7
|
+
// MemoNyanDum(http://junki.lix.jp/)
|
8
|
+
// C言語で実装する画像処理アルゴリズムのすべて-画像処理プログラミング
|
9
|
+
// Sharaku Image Manipulation Program(http://www21.atwiki.jp/submarine/)
|
10
|
+
// http://www.geocities.com/SiliconValley/Program/8979/color/index.htm
|
11
|
+
// http://www.teu.ac.jp/clab/kondo/research/jimmy
|
12
|
+
// http://www.sm.rim.or.jp/~shishido
|
13
|
+
// adobe gil
|
14
|
+
// Ryota Maruko
|
15
|
+
//=============================================================================
|
16
|
+
#ifndef _PIKL_
|
17
|
+
#define _PIKL_
|
8
18
|
|
9
19
|
#ifdef WIN32
|
10
20
|
#define PKLExport __declspec(dllexport)
|
@@ -17,25 +27,26 @@
|
|
17
27
|
extern "C" {
|
18
28
|
#endif
|
19
29
|
|
20
|
-
#
|
30
|
+
#include <stdio.h>
|
31
|
+
|
32
|
+
#define PKL_VERSION "libpikl 3.0.8"
|
21
33
|
|
22
|
-
//
|
34
|
+
// PKL object
|
23
35
|
typedef struct _PKLImage * PKLImage;
|
36
|
+
typedef struct _PKLColor * PKLColor;
|
24
37
|
|
25
|
-
|
38
|
+
//---------------------------------------------------------------------------------------
|
26
39
|
// support format & color
|
27
40
|
// JPEG:
|
28
41
|
// gray/rgb/cmyk
|
29
42
|
// * color-typeのYCbCrおよびYCCには読み取りも保存も対応していない
|
30
|
-
//
|
31
43
|
// PNG:
|
32
44
|
// gray/gray-alpha/rgb/rgb-alpha/palette
|
33
45
|
// * alphaは読取は可能だが、保存はできない
|
34
46
|
// * paletteはRGBとして扱われる
|
35
|
-
//
|
36
47
|
// BMP(windows bitmap):
|
37
|
-
// 24bit
|
38
|
-
|
48
|
+
// 24bit and non-compress only
|
49
|
+
//---------------------------------------------------------------------------------------
|
39
50
|
typedef enum {
|
40
51
|
PKL_FORMAT_ERROR, // error
|
41
52
|
PKL_FORMAT_JPEG, // jpeg
|
@@ -54,396 +65,341 @@ typedef enum {
|
|
54
65
|
PKL_YCCK // non support
|
55
66
|
} PKL_COLOR_SPACE;
|
56
67
|
|
57
|
-
|
58
|
-
// 回転角度(右回り)
|
59
|
-
// * pkl_rotateで使用
|
60
|
-
//=============================================================================
|
61
|
-
typedef enum {
|
62
|
-
PKL_ANGLE_000,
|
63
|
-
PKL_ANGLE_090,
|
64
|
-
PKL_ANGLE_180,
|
65
|
-
PKL_ANGLE_270
|
66
|
-
} PKL_ANGLE;
|
67
|
-
|
68
|
-
//=============================================================================
|
68
|
+
//---------------------------------------------------------------------------------------
|
69
69
|
// サンプリングパターン
|
70
70
|
// * 全てのサンプリングパターンで拡大縮小対応
|
71
|
-
// * 但し、
|
72
|
-
|
71
|
+
// * 但し、pixel-averageで拡大をする場合は、lanczosと品質は同じ
|
72
|
+
//---------------------------------------------------------------------------------------
|
73
73
|
typedef enum {
|
74
74
|
PKL_SAMPLE_ERROR,
|
75
75
|
PKL_SAMPLE_NN, // nearest neighbor
|
76
76
|
PKL_SAMPLE_BL, // bilinear
|
77
77
|
PKL_SAMPLE_BC, // bicubic
|
78
|
-
PKL_SAMPLE_PA, //
|
78
|
+
PKL_SAMPLE_PA, // pixel-average
|
79
79
|
PKL_SAMPLE_LZ // lanczos
|
80
80
|
} PKL_SAMPLE;
|
81
81
|
|
82
|
-
|
83
|
-
//
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
//---------------------------------------------------------------------------------------
|
83
|
+
// 表色系定義
|
84
|
+
//---------------------------------------------------------------------------------------
|
85
|
+
typedef enum {
|
86
|
+
PKL_GRAY,
|
87
|
+
PKL_RED,
|
88
|
+
PKL_GREEN,
|
89
|
+
PKL_BLUE,
|
90
|
+
PKL_CYAN,
|
91
|
+
PKL_MAGENTA,
|
92
|
+
PKL_YELLOW,
|
93
|
+
PKL_BLACK
|
94
|
+
} PKL_COLOR_MODEL;
|
95
|
+
|
96
|
+
/** macros **/
|
97
|
+
//#define pkl_color(a,b,c,d) ((a<<24)+(b<<16)+(c<<8)+d)
|
98
|
+
|
99
|
+
/*************************************************************/
|
100
|
+
/** utility **/
|
101
|
+
/*************************************************************/
|
102
|
+
//---------------------------------------------------------------------------------------
|
103
|
+
// 表色系に応じたカラーオブジェクトを作る
|
104
|
+
// _gray,_rgb,_cmykはpkl_color_createのエイリアスです
|
105
|
+
//---------------------------------------------------------------------------------------
|
106
|
+
PKLExport PKLColor pkl_color_gray(unsigned char gray);
|
107
|
+
PKLExport PKLColor pkl_color_rgb(unsigned char red, unsigned char green, unsigned char blue);
|
108
|
+
PKLExport PKLColor pkl_color_cmyk(unsigned char c, unsigned char m, unsigned char y, unsigned char k);
|
109
|
+
PKLExport PKLColor pkl_color_create(unsigned char a, unsigned char b, unsigned char c, unsigned char d);
|
110
|
+
|
111
|
+
//---------------------------------------------------------------------------------------
|
112
|
+
// ターゲットピクセルの表色系に応じた色情報を取得・設定する
|
113
|
+
// 指定したPKL_COLOR_MODELとイメージのカラースペースが一致しない場合は実行されません
|
114
|
+
//---------------------------------------------------------------------------------------
|
115
|
+
PKLExport unsigned char pkl_get_color(PKLImage pkl, int x, int y, PKL_COLOR_MODEL target);
|
116
|
+
PKLExport int pkl_set_color(PKLImage pkl, int x, int y, PKL_COLOR_MODEL target, unsigned char color);
|
117
|
+
|
118
|
+
//---------------------------------------------------------------------------------------
|
119
|
+
// ターゲットピクセルの色情報を取得・設定する
|
120
|
+
// 指定したPKL_COLOR_MODELとイメージのカラースペースが一致しない場合は実行されません
|
121
|
+
// * pkl_pixel_getによって取得したPKLColorはpkl_color_closeしてください
|
122
|
+
//---------------------------------------------------------------------------------------
|
123
|
+
PKLExport PKLColor pkl_get_pixel(PKLImage pkl, int x, int y);
|
124
|
+
PKLExport int pkl_set_pixel(PKLImage pkl, int x, int y, PKLColor color);
|
125
|
+
|
126
|
+
//---------------------------------------------------------------------------------------
|
127
|
+
// PKLColorから各色情報を取り出します
|
128
|
+
//---------------------------------------------------------------------------------------
|
129
|
+
PKLExport unsigned char pkl_color(PKLColor color, PKL_COLOR_MODEL target);
|
130
|
+
|
131
|
+
//---------------------------------------------------------------------------------------
|
132
|
+
// PKLColorオブジェクトの破棄
|
133
|
+
//---------------------------------------------------------------------------------------
|
134
|
+
PKLExport void pkl_color_close(PKLColor color);
|
135
|
+
|
136
|
+
|
137
|
+
/*************************************************************/
|
138
|
+
/** basic-method **/
|
139
|
+
/*************************************************************/
|
140
|
+
// PKLImageを構築
|
91
141
|
PKLExport PKLImage pkl_open(const char *in);
|
92
142
|
|
93
|
-
|
94
|
-
|
95
|
-
@param pkl [in] PKLImageオブジェクト
|
96
|
-
@return PKL_FORMAT参照
|
97
|
-
*/
|
98
|
-
PKLExport PKL_FORMAT pkl_format(PKLImage pkl);
|
143
|
+
//open済みファイルディスクリプタを指定
|
144
|
+
PKLExport PKLImage pkl_fdopen(FILE *in);
|
99
145
|
|
100
|
-
|
101
|
-
|
102
|
-
@param pkl [in] PKLImageオブジェクト
|
103
|
-
@return 画像の幅(ピクセル数)
|
104
|
-
*/
|
105
|
-
PKLExport int pkl_width(PKLImage pkl);
|
146
|
+
// 保存
|
147
|
+
PKLExport int pkl_save(PKLImage pkl, const char *out, PKL_FORMAT format);
|
106
148
|
|
107
|
-
|
108
|
-
|
109
|
-
@param pkl [in] PKLImageオブジェクト
|
110
|
-
@return 画像の高さ(ピクセル数)
|
111
|
-
*/
|
112
|
-
PKLExport int pkl_height(PKLImage pkl);
|
149
|
+
//open済みファイルディスクリプタを指定
|
150
|
+
PKLExport int pkl_output(PKLImage pkl, FILE *out, PKL_FORMAT format);
|
113
151
|
|
152
|
+
// PKLImageオブジェクトの破棄
|
153
|
+
PKLExport void pkl_close(PKLImage pkl);
|
114
154
|
|
115
|
-
|
116
|
-
|
117
|
-
@param pkl [in] PKLImageオブジェクト
|
118
|
-
@param level [in]
|
119
|
-
0(無圧縮) .. 10(最高圧縮)。
|
120
|
-
指定がない場合は、デフォルトレベルが設定されます。
|
121
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
122
|
-
*/
|
123
|
-
PKLExport int pkl_compress(PKLImage pkl, int level);
|
155
|
+
// 画像フォーマット
|
156
|
+
PKLExport PKL_FORMAT pkl_format(PKLImage pkl);
|
124
157
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
/*
|
129
|
-
保存<br>
|
130
|
-
@param pkl [in] PKLImageオブジェクト
|
131
|
-
@param out [in] 保存ファイル名
|
132
|
-
@param format [in] 保存フォーマット(PKL_FORMAT参照)
|
133
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
134
|
-
*/
|
135
|
-
PKLExport int pkl_save(PKLImage pkl, const char *out, PKL_FORMAT format);
|
158
|
+
// 画像の幅・高さ
|
159
|
+
PKLExport int pkl_width(PKLImage pkl);
|
160
|
+
PKLExport int pkl_height(PKLImage pkl);
|
136
161
|
|
137
|
-
|
138
|
-
//
|
139
|
-
|
140
|
-
/*!
|
141
|
-
PKLImageオブジェクトの破棄<br>
|
142
|
-
確保していたメモリを全て解放します。用がなくなったら実行するようにしてください。
|
143
|
-
@param pkl [in] PKLImageオブジェクト
|
144
|
-
*/
|
145
|
-
PKLExport void pkl_close(PKLImage pkl);
|
162
|
+
// 色数を数える
|
163
|
+
// * 色数(CMYKの場合はCMYのみカウント)
|
164
|
+
PKLExport int pkl_count(PKLImage pkl);
|
146
165
|
|
166
|
+
// カラースペースを返す
|
167
|
+
PKLExport PKL_COLOR_SPACE pkl_colorspace(PKLImage pkl);
|
147
168
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
・左上原点はsx=0, sy=0になります。<br>
|
153
|
-
@param pkl [in] PKLImageオブジェクト
|
154
|
-
@param sx [in] 切り出し位置(x)
|
155
|
-
@param sy [in] 切り出し位置(y)
|
156
|
-
@param width [in] sxからの切り出す幅(ピクセル数)
|
157
|
-
@param height [in] syからの切り出す高さ(ピクセル数)
|
158
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
159
|
-
*/
|
160
|
-
PKLExport int pkl_trim(PKLImage pkl, int sx, int sy, int width, int height);
|
169
|
+
// PNG/JPEG保存時の圧縮率を指示する
|
170
|
+
// level: 0(無圧縮) .. 10(最高圧縮)。
|
171
|
+
// 指定がない場合は、デフォルトレベルが設定される
|
172
|
+
PKLExport int pkl_compress(PKLImage pkl, int level);
|
161
173
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
@param angle [in] 回転角度(PKL_ANGLE参照)
|
166
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
167
|
-
*/
|
168
|
-
PKLExport int pkl_rotate(PKLImage pkl, PKL_ANGLE angle);
|
174
|
+
// 新規のキャンバスを作る
|
175
|
+
// backcolor: NULLの時は白
|
176
|
+
PKLExport PKLImage pkl_canvas(int width, int height, PKL_COLOR_SPACE color, PKLColor backcolor);
|
169
177
|
|
170
|
-
|
171
|
-
|
172
|
-
PKLExport int pkl_rotate2(PKLImage pkl, float angle, PKL_SAMPLE sample,
|
173
|
-
unsigned char a, unsigned char b, unsigned char c, unsigned char d);
|
174
|
-
|
175
|
-
/*!
|
176
|
-
拡大・縮小します。<br>
|
177
|
-
@param pkl [in] PKLImageオブジェクト
|
178
|
-
@param width [in] 横方向の変形後サイズ(ピクセル数)
|
179
|
-
@param height [in] 縦方向の変形後サイズ(ピクセル数)
|
180
|
-
@param sample [in] サンプリングパターン(PKL_SAMPLE参照)
|
181
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
182
|
-
*/
|
183
|
-
PKLExport int pkl_resize(PKLImage pkl, int width, int height, PKL_SAMPLE sample);
|
178
|
+
// PKLImageの複製
|
179
|
+
PKLExport PKLImage pkl_dup(PKLImage pkl);
|
184
180
|
|
185
|
-
//=============================================================================
|
186
|
-
// affine変換
|
187
|
-
//=============================================================================
|
188
|
-
//*_scale = 変形率の逆数
|
189
|
-
PKLExport void pkl_matrix_scale(PKLImage pkl, double x_scale, double y_scale);
|
190
181
|
|
191
|
-
//angle=左回りの回転角度
|
192
|
-
PKLExport void pkl_matrix_rotate(PKLImage pkl, double angle);
|
193
182
|
|
194
|
-
|
195
|
-
|
183
|
+
/*************************************************************/
|
184
|
+
/** basic-operation **/
|
185
|
+
/*************************************************************/
|
186
|
+
//---------------------------------------------------------------------------------------
|
187
|
+
// トリミング
|
188
|
+
// ・パラメータは左上原点です
|
189
|
+
// ・左上原点はsx=0, sy=0になります。
|
190
|
+
// sx: 切り出し位置(x)
|
191
|
+
// sy: 切り出し位置(y)
|
192
|
+
// width: sxからの切り出す幅(ピクセル数)
|
193
|
+
// height: syからの切り出す高さ(ピクセル数)
|
194
|
+
//---------------------------------------------------------------------------------------
|
195
|
+
PKLExport int pkl_trim(PKLImage pkl, int sx, int sy, int width, int height);
|
196
196
|
|
197
|
-
|
198
|
-
|
197
|
+
//---------------------------------------------------------------------------------------
|
198
|
+
// 拡大・縮小
|
199
|
+
// width: 横方向の変形後サイズ(ピクセル数)
|
200
|
+
// height: 縦方向の変形後サイズ(ピクセル数)
|
201
|
+
// sample: サンプリングパターン(PKL_SAMPLE参照)
|
202
|
+
//---------------------------------------------------------------------------------------
|
203
|
+
PKLExport int pkl_resize(PKLImage pkl, int width, int height, PKL_SAMPLE sample);
|
199
204
|
|
200
|
-
|
201
|
-
//
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
205
|
+
//---------------------------------------------------------------------------------------
|
206
|
+
// 回転
|
207
|
+
// angle: 右回転角度
|
208
|
+
// sample: サンプリングパターン(PKL_SAMPLE参照)
|
209
|
+
// angle: 背景色(NULLの時は白)
|
210
|
+
//---------------------------------------------------------------------------------------
|
211
|
+
PKLExport int pkl_rotate(PKLImage pkl, float angle, PKL_SAMPLE sample, PKLColor backcolor);
|
212
|
+
|
213
|
+
//---------------------------------------------------------------------------------------
|
214
|
+
// affine変換(from adobe gil)
|
215
|
+
// width, height: affine変換後のサイズ
|
216
|
+
// backcolor: 背景色(NULLの時は白)
|
217
|
+
// *_scale: 変形率の逆数
|
218
|
+
// angle : 左回りの回転角度
|
219
|
+
// x, y: 移動方向。正数は上、左方向への移動
|
220
|
+
//---------------------------------------------------------------------------------------
|
221
|
+
PKLExport int pkl_affine(PKLImage pkl, PKL_SAMPLE sampler, int width, int height, PKLColor backcolor,
|
222
|
+
double x_scale, double y_scale, double angle, int x, int y);
|
223
|
+
|
224
|
+
|
225
|
+
/*************************************************************/
|
226
|
+
/** enhance(一般的なフィルタ) **/
|
227
|
+
/*************************************************************/
|
228
|
+
//---------------------------------------------------------------------------------------
|
229
|
+
// アンシャープマスク
|
230
|
+
// threshold:
|
231
|
+
// 適応量(0-255)
|
232
|
+
// 0の時:変化しません。
|
233
|
+
// 255の時:全ての色にアンシャープ処理が働きます
|
234
|
+
// edge:
|
235
|
+
// エッジ。想定結果が得られる範囲は-10 .. 10程度です。
|
236
|
+
// edge=0の時:変化しません。
|
237
|
+
// edge>0の時:値が大きいほど先鋭化されます。
|
238
|
+
// edge<0の時:値が小さいほどぼやけます。
|
239
|
+
//
|
240
|
+
// 想定結果が得られる範囲は-10 .. 10程度です。
|
241
|
+
// これを超える場合は、品質の保証はありません。
|
242
|
+
// ※画質によりこの通りではありません。-10..10の範囲より小さくなる可能性があります。
|
243
|
+
//---------------------------------------------------------------------------------------
|
221
244
|
PKLExport int pkl_unsharp(PKLImage pkl, int threshold, double edge);
|
222
245
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
0
|
229
|
-
|
230
|
-
* rateが0未満の時は直線的に平坦化されます。
|
231
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
232
|
-
*/
|
246
|
+
//---------------------------------------------------------------------------------------
|
247
|
+
// コントラスト調整
|
248
|
+
// rate: 調整係数(-127 - 127)
|
249
|
+
// 0の時:変化しません。
|
250
|
+
// * rateが0以上の時は周波数によるコントラスト強調がおこなわれます。
|
251
|
+
// * rateが0未満の時は直線的に平坦化されます。
|
252
|
+
//---------------------------------------------------------------------------------------
|
233
253
|
PKLExport int pkl_contrast(PKLImage pkl, int rate);
|
234
254
|
|
235
|
-
|
236
|
-
|
237
|
-
ヒストグラムの平坦化をおこないます。各色の分布に偏りがある画像に有効な場合があります。
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
@param coeff [in]
|
244
|
-
平坦化時の係数。
|
245
|
-
1が標準です。1より小さい場合は暗く、1より大きい場合は明るくなります(0.0..2.0)
|
246
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
247
|
-
*/
|
255
|
+
//---------------------------------------------------------------------------------------
|
256
|
+
// レベル補正
|
257
|
+
// ヒストグラムの平坦化をおこないます。各色の分布に偏りがある画像に有効な場合があります。
|
258
|
+
// low: 全ピクセル数に対して、切り捨てる暗い色の総数の割合(0-100%)
|
259
|
+
// high: 全ピクセル数に対して、切り捨てる明るい色の総数の割合(0-100%)
|
260
|
+
// coeff: 平坦化時の係数。
|
261
|
+
// 1が標準です。1より小さい場合は暗く、1より大きい場合は明るくなります(0.0..2.0)
|
262
|
+
//---------------------------------------------------------------------------------------
|
248
263
|
PKLExport int pkl_level(PKLImage pkl, double low, double high, double coeff);
|
249
264
|
|
250
|
-
|
251
|
-
|
252
|
-
各色にcolor値を加算する単純な処理です。
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
255
|
257
|
-
|
258
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
259
|
-
*/
|
265
|
+
//---------------------------------------------------------------------------------------
|
266
|
+
// 明るさ調整
|
267
|
+
// 各色にcolor値を加算する単純な処理です。
|
268
|
+
// color:
|
269
|
+
// 各色に加算する色。
|
270
|
+
// 255を指定すれば、ただの白い画像になります。
|
271
|
+
// -255を指定すると、ただの黒い画像になります。
|
272
|
+
//---------------------------------------------------------------------------------------
|
260
273
|
PKLExport int pkl_brightness(PKLImage pkl, int color);
|
261
274
|
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
@param sm [in]
|
270
|
-
彩度(-1..1)。
|
271
|
-
+0.1で10%up。
|
272
|
-
0.0は変化なし
|
273
|
-
@param hd [in]
|
274
|
-
色相(360度回転)。
|
275
|
-
360度の倍数では変化しません。
|
276
|
-
参考:R=113.2/Ye=173.0/G=225.0/Cy=293.2/B=353.0/Mg=45.0
|
277
|
-
@return 成功した場合は0。失敗した場合は真を返します。
|
278
|
-
*/
|
275
|
+
//---------------------------------------------------------------------------------------
|
276
|
+
// 輝度(明るさ)・彩度(鮮やかさ)・色相(色合い)調整
|
277
|
+
// ym: 輝度(-1..1)。+0.1で10%up。0.0は変化なし
|
278
|
+
// sm: 彩度(-1..1)。+0.1で10%up。0.0は変化なし
|
279
|
+
// hd: 色相(360度回転)。360度の倍数では変化しません。
|
280
|
+
// 参考:R=113.2/Ye=173.0/G=225.0/Cy=293.2/B=353.0/Mg=45.0
|
281
|
+
//---------------------------------------------------------------------------------------
|
279
282
|
PKLExport int pkl_hls(PKLImage pkl, double ym, double sm, double hd);
|
280
283
|
|
281
|
-
|
282
|
-
//
|
283
|
-
//
|
284
|
-
//
|
285
|
-
//
|
284
|
+
//---------------------------------------------------------------------------------------
|
285
|
+
// ガンマ補正
|
286
|
+
// gm: 補正係数(>=0.0)
|
287
|
+
// gm<1.0:暗く調整される
|
288
|
+
// gm=1.0:変化しない
|
289
|
+
// gm>1.0:明るく調整される
|
290
|
+
//---------------------------------------------------------------------------------------
|
286
291
|
PKLExport int pkl_gamma(PKLImage pkl, double gm);
|
287
292
|
|
288
|
-
|
293
|
+
// ノイズ除去(median filter)
|
289
294
|
PKLExport int pkl_noisecut(PKLImage pkl);
|
290
295
|
|
291
|
-
//=============================================================================
|
292
|
-
// エフェクト2
|
293
|
-
//=============================================================================
|
294
|
-
/* 反転 */
|
295
|
-
PKLExport int pkl_invert(PKLImage pkl);
|
296
|
-
|
297
|
-
//エッジ(輪郭)を強調する
|
298
|
-
//unsharpは画像全体をシャープにするが、これはエッジ部分のみの強調
|
299
|
-
typedef enum {
|
300
|
-
PKL_FOCUS_DETAIL, //弱い
|
301
|
-
PKL_FOCUS_FOCUS, //中間
|
302
|
-
PKL_FOCUS_EDGES //強い
|
303
|
-
} PKL_FOCUS;
|
304
|
-
PKLExport int pkl_focus(PKLImage pkl, PKL_FOCUS type);
|
305
|
-
|
306
|
-
//エンボス
|
307
|
-
typedef enum {
|
308
|
-
PKL_EMBOSS_EMBOSS, //エンボス1
|
309
|
-
PKL_EMBOSS_HEAVY, //エンボス2
|
310
|
-
PKL_EMBOSS_LIGHT, //エンボス3
|
311
|
-
PKL_EMBOSS_LAPLACIAN //輪郭抽出
|
312
|
-
} PKL_EMBOSS;
|
313
|
-
PKLExport int pkl_emboss(PKLImage pkl, PKL_EMBOSS type);
|
314
|
-
|
315
296
|
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
//
|
321
|
-
//
|
322
|
-
//
|
323
|
-
|
324
|
-
|
325
|
-
/* 画像の合成2 */
|
326
|
-
// pkl_composite()に加え、childイメージ上の1色を透明扱いにできる
|
327
|
-
// parent: ベース(処理後はこのオブジェクトが更新される)
|
328
|
-
// child: 乗せる画像(このオブジェクトは処理しても不可侵)
|
329
|
-
// xpos,ypos: childを乗せるparent上の座標.
|
330
|
-
// 必ずparent上の座標でなければならない.
|
331
|
-
// transcolor: 透明にする色(pkl_colorマクロで生成する)
|
332
|
-
// *parentとchildは同じカラーモードでなければエラーとなる
|
333
|
-
PKLExport int pkl_composite2(PKLImage parent, PKLImage child, int xpos, int ypos, int transcolor);
|
334
|
-
|
335
|
-
/* (安易な)セピア */
|
336
|
-
// red_weight,green_weight,blue_weight:
|
337
|
-
// red,green,blueそれぞれに対しての重み
|
338
|
-
// 値が大きいほど、その色が強く出る
|
339
|
-
// *RGBのみに対応
|
340
|
-
// *セピアっぽくするのであれば、redの重みを1.0として、他の重みを1.0より小さくする
|
341
|
-
PKLExport int pkl_sepia(PKLImage pkl, double red_weight, double green_weight, double blue_weight);
|
342
|
-
|
343
|
-
/* (安易な)油絵化 */
|
344
|
-
// 油絵のようにする
|
345
|
-
// weight: 筆の太さ(というか最頻色走査領域のサイズ)
|
346
|
-
// 例えば、3を指定した場合、近傍3x3の領域の最頻色が選択される
|
347
|
-
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
348
|
-
PKLExport int pkl_oilpaint(PKLImage pkl, int weight);
|
349
|
-
|
350
|
-
|
351
|
-
//=============================================================================
|
352
|
-
// Blur(ぼかし)
|
353
|
-
//=============================================================================
|
354
|
-
/* (安易な)ぼかし */
|
355
|
-
// weight: 平均算出領域のサイズ
|
356
|
-
// 例えば、3を指定した場合、近傍3x3の領域の平均色が選択される
|
357
|
-
// 値が大きいほど、ぼかし度は強くなる。
|
297
|
+
/*************************************************************/
|
298
|
+
/** blur(ぼかし) **/
|
299
|
+
/*************************************************************/
|
300
|
+
//---------------------------------------------------------------------------------------
|
301
|
+
// (安易な)ぼかし
|
302
|
+
// weight: 平均算出領域のサイズ
|
303
|
+
// 例えば、3を指定した場合、近傍3x3の領域の平均色が選択される
|
304
|
+
// 値が大きいほど、ぼかし度は強くなる。
|
358
305
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
306
|
+
//---------------------------------------------------------------------------------------
|
359
307
|
PKLExport int pkl_blur(PKLImage pkl, int weight);
|
360
308
|
|
361
|
-
|
362
|
-
//
|
309
|
+
//---------------------------------------------------------------------------------------
|
310
|
+
// ガウスぼかし
|
311
|
+
// ガウス関数を使ったぼかし。「画像全体にぼかしが入る」「方向がない」
|
363
312
|
// weight: ぼかし強調度(>0.0)
|
364
313
|
// 値が大きいほど、ぼかし度は強くなる。
|
365
314
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
315
|
+
//---------------------------------------------------------------------------------------
|
366
316
|
PKLExport int pkl_gaussblur(PKLImage pkl, double weight);
|
367
317
|
|
368
|
-
|
369
|
-
//
|
370
|
-
//
|
371
|
-
//
|
318
|
+
//---------------------------------------------------------------------------------------
|
319
|
+
// 放射状ブラー(radiation)
|
320
|
+
// x,y: 放射の中心座標(画像範囲内にない場合は中心)
|
321
|
+
// ef: 中心からの強調度(>0.0。値が大きいほど、放射度が強くなる)
|
322
|
+
// weight: ぼかしの強調度(>0)
|
372
323
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
324
|
+
//---------------------------------------------------------------------------------------
|
373
325
|
PKLExport int pkl_rblur(PKLImage pkl, int x, int y, double ef, int weight);
|
374
326
|
|
375
|
-
|
376
|
-
//
|
377
|
-
//
|
378
|
-
//
|
327
|
+
//---------------------------------------------------------------------------------------
|
328
|
+
// 回転ブラー(angle)
|
329
|
+
// x,y: 放射の中心座標(画像範囲内にない場合は中心)
|
330
|
+
// ef: 中心からの強調度(>0.0。値が大きいほど、放射度が強くなる)
|
331
|
+
// weight: ぼかしの強調度(>0)
|
379
332
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
333
|
+
//---------------------------------------------------------------------------------------
|
380
334
|
PKLExport int pkl_ablur(PKLImage pkl, int x, int y, double ef, int weight);
|
381
335
|
|
382
|
-
|
383
|
-
//
|
384
|
-
//
|
385
|
-
//
|
386
|
-
//
|
336
|
+
//---------------------------------------------------------------------------------------
|
337
|
+
// うずまきブラー(whirlpool)
|
338
|
+
// x,y: 放射の中心座標(画像範囲内にない場合は中心)
|
339
|
+
// ef: 中心からの強調度(>0.0。値が大きいほど、放射度が強くなる)
|
340
|
+
// weight: ぼかしの強調度(>0)
|
341
|
+
// angle: 回転角度(0は回転なし)
|
387
342
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
343
|
+
//---------------------------------------------------------------------------------------
|
388
344
|
PKLExport int pkl_wblur(PKLImage pkl, int x, int y, double ef, int weight, double angle);
|
389
345
|
|
390
|
-
|
391
|
-
//
|
346
|
+
//---------------------------------------------------------------------------------------
|
347
|
+
// モーションブラー(motion)
|
348
|
+
// 任意角度での直線ブラー
|
392
349
|
// angle: ぼかす角度
|
393
350
|
// range: ぼかし強調度
|
394
351
|
// *weightを大きくしすぎると、処理が重くなる。注意せよ
|
352
|
+
//---------------------------------------------------------------------------------------
|
395
353
|
PKLExport int pkl_mblur(PKLImage pkl, double angle, int weight);
|
396
354
|
|
397
355
|
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
//
|
403
|
-
//
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
//
|
408
|
-
//
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
//
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
/* VTR調 */
|
421
|
-
//colspace; //行の間隔
|
422
|
-
//gst; //横方向のブレ
|
423
|
-
//cst; //行の色差分
|
424
|
-
PKLExport int pkl_vtr(PKLImage pkl, int colspace, int gst, int cst);
|
425
|
-
|
426
|
-
//**************************************************************************
|
427
|
-
// エフェクト4(実験シリーズ)
|
428
|
-
//**************************************************************************
|
429
|
-
/* 輪郭抽出 */
|
430
|
-
PKLExport int pkl_edgepaint(PKLImage pkl);
|
356
|
+
/*************************************************************/
|
357
|
+
/** pattern **/
|
358
|
+
/*************************************************************/
|
359
|
+
//---------------------------------------------------------------------------------------
|
360
|
+
// パターン描画
|
361
|
+
// pw,ph: パターンのサイズ
|
362
|
+
// [六角形]phのサイズをpwの3倍に設定すると、縦横サイズが同じパターンになる
|
363
|
+
// [ひし形]phのサイズをpwの2倍に設定すると、縦横サイズが同じパターンになる
|
364
|
+
// ex1) pw=10,ph=10にすると横長のパターン
|
365
|
+
// ex2) pw=10,ph=20にすると縦横同じ大きさのパターン
|
366
|
+
// ex3) pw=10,ph=30にすると縦長のパターン
|
367
|
+
// [ 円 ]phのサイズをpwの3倍に設定すると、縦横サイズが同じパターンになる
|
368
|
+
// [レンガ]phのサイズをpwの4倍に設定すると、縦横サイズが同じパターンになる
|
369
|
+
// type: 塗り方式
|
370
|
+
//---------------------------------------------------------------------------------------
|
371
|
+
// パターンタイプ
|
372
|
+
typedef enum {
|
373
|
+
PKL_PATTERN_HEXAGON, //六角形(default)
|
374
|
+
PKL_PATTERN_DIAMOND, //ひし形
|
375
|
+
PKL_PATTERN_CIRCLE, //円
|
376
|
+
PKL_PATTERN_BRICK //レンガ
|
377
|
+
} PKL_PATTERN_TYPE;
|
431
378
|
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
379
|
+
// パターンの塗り方式
|
380
|
+
typedef enum {
|
381
|
+
PKL_PAINT_LINE, //ライン(パターン内の横方向の平均で塗る)(default)
|
382
|
+
PKL_PAINT_AVE, //モザイク(パターン内の平均色で塗る)
|
383
|
+
} PKL_PAINT_TYPE;
|
436
384
|
|
385
|
+
PKLExport int pkl_pattern(PKLImage pkl, int pw, int ph, PKL_PATTERN_TYPE mode, PKL_PAINT_TYPE type);
|
437
386
|
|
438
|
-
|
439
|
-
//
|
440
|
-
//
|
441
|
-
|
387
|
+
//---------------------------------------------------------------------------------------
|
388
|
+
// モザイク処理
|
389
|
+
// mx,my:モザイクのピクセルサイズ(それぞれ、幅・高さ)
|
390
|
+
// 1以下の時には変化はありません。画像サイズ以上の時には1色の画像になります
|
391
|
+
//---------------------------------------------------------------------------------------
|
392
|
+
PKLExport int pkl_mosaic(PKLImage pkl, int msx, int msy);
|
442
393
|
|
394
|
+
//---------------------------------------------------------------------------------------
|
395
|
+
// モザイク処理&2値化
|
396
|
+
// ms:モザイクのサイズ
|
397
|
+
//---------------------------------------------------------------------------------------
|
398
|
+
PKLExport int pkl_pixelate(PKLImage pkl, int ms);
|
443
399
|
|
444
|
-
|
445
|
-
//
|
446
|
-
//
|
400
|
+
//---------------------------------------------------------------------------------------
|
401
|
+
// モザイクグリッド
|
402
|
+
// モザイク化した上でグリッド線を引く
|
447
403
|
// msx,msy: モザイクのピクセルサイズ(それぞれ、幅・高さ)
|
448
404
|
// color: グリッド線の調整値
|
449
405
|
// グリッド線色は単色ではなく、モザイク領域の色を元に生成する
|
@@ -451,44 +407,187 @@ PKLExport int pkl_tileslit(PKLImage pkl, int area, int shift);
|
|
451
407
|
// 0の時:モザイクと同色になり表出しない
|
452
408
|
// 255の時:いわゆる白線
|
453
409
|
// -255の時:いわゆる黒線
|
410
|
+
//---------------------------------------------------------------------------------------
|
454
411
|
PKLExport int pkl_grid(PKLImage pkl, int msx, int msy, int color);
|
455
412
|
|
413
|
+
// お風呂のタイル風
|
414
|
+
typedef enum {
|
415
|
+
PKL_TILE_RECT, //四角形
|
416
|
+
PKL_TILE_HEXAGON, //六角形
|
417
|
+
PKL_TILE_DIAMOND, //ひし形
|
418
|
+
PKL_TILE_CIRCLE, //円
|
419
|
+
PKL_TILE_BRICK //レンガ
|
420
|
+
} PKL_TILE_TYPE;
|
421
|
+
PKLExport int pkl_tile(PKLImage pkl, PKL_TILE_TYPE type, int msx, int msy, unsigned char level);
|
422
|
+
|
423
|
+
|
424
|
+
|
425
|
+
/*************************************************************/
|
426
|
+
/** ボロノイ分割 **/
|
427
|
+
/*************************************************************/
|
428
|
+
//---------------------------------------------------------------------------------------
|
429
|
+
// ボロノイ分割(ゾーン指定)
|
430
|
+
// zone: ボロノイサイズ(>=2, <w,h)
|
431
|
+
// bordercolor: NULLの時は境界線を引かない。境界線色はpkl_color_createで作る
|
432
|
+
// test: 真 AND bordercolor!=NULLの時、分割シュミレーション図を出力する
|
433
|
+
//---------------------------------------------------------------------------------------
|
434
|
+
PKLExport int pkl_voronoi_zone(PKLImage pkl, int zone, PKLColor bordercolor, int test);
|
435
|
+
|
436
|
+
//---------------------------------------------------------------------------------------
|
437
|
+
// ボロノイ分割(母点数指定)
|
438
|
+
// count: 母点数(>=10)
|
439
|
+
// bordercolor: NULLの時は境界線を引かない。境界線色はpkl_color_createで作る
|
440
|
+
// test: 真 AND bordercolor!=NULLの時、分割シュミレーション図を出力する
|
441
|
+
//
|
442
|
+
// *zoneとの違いは、母点がよりランダムに配置されるという点
|
443
|
+
//---------------------------------------------------------------------------------------
|
444
|
+
PKLExport int pkl_voronoi_count(PKLImage pkl, int count, PKLColor bordercolor, int test);
|
445
|
+
|
446
|
+
|
447
|
+
/*************************************************************/
|
448
|
+
/** decrease **/
|
449
|
+
/** 色数を変える(減色・表色系変更) **/
|
450
|
+
/*************************************************************/
|
451
|
+
//---------------------------------------------------------------------------------------
|
452
|
+
// ポスタライズ(階調変更)
|
453
|
+
// level:階調数(1-256) *256を何分割するかということ
|
454
|
+
//---------------------------------------------------------------------------------------
|
455
|
+
PKLExport int pkl_posterize(PKLImage pkl, int level);
|
456
|
+
|
457
|
+
//---------------------------------------------------------------------------------------
|
458
|
+
// 色数削減
|
459
|
+
// 単純にlevelで指定した下位ビットを削除する。
|
460
|
+
// level: 無効にする下位ビット数(0-255)
|
461
|
+
//---------------------------------------------------------------------------------------
|
462
|
+
PKLExport int pkl_cutcolor(PKLImage pkl, int level);
|
456
463
|
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
//
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
464
|
+
// CMYK→RGB
|
465
|
+
PKLExport int pkl_rgb(PKLImage pkl);
|
466
|
+
|
467
|
+
// RGB→GRAYSCALE
|
468
|
+
typedef enum {
|
469
|
+
PKL_GRAY_NRM, //加重平均法(最も一般的なグレースケール)
|
470
|
+
PKL_GRAY_MED, //中間値法
|
471
|
+
PKL_GRAY_AVE //単純平均法
|
472
|
+
} PKL_GRAYTYPE;
|
473
|
+
PKLExport int pkl_gray(PKLImage pkl, PKL_GRAYTYPE type);
|
474
|
+
|
475
|
+
// GRAYSCALE→2c
|
476
|
+
PKLExport int pkl_2c(PKLImage pkl, int threshold);
|
477
|
+
|
478
|
+
|
479
|
+
/*************************************************************/
|
480
|
+
/** divide(パターン分割) **/
|
481
|
+
/*************************************************************/
|
482
|
+
//---------------------------------------------------------------------------------------
|
483
|
+
// 格子のずらし配置
|
484
|
+
// area:格子のサイズ
|
485
|
+
// shift:格子をずらす範囲
|
486
|
+
//---------------------------------------------------------------------------------------
|
487
|
+
PKLExport int pkl_tileslit(PKLImage pkl, int area, int shift);
|
465
488
|
|
466
|
-
|
489
|
+
//---------------------------------------------------------------------------------------
|
490
|
+
// フォトフレーム分割
|
491
|
+
// イメージを分割し、フォトフレームのようにする
|
492
|
+
// backcolor: 背景色(NULLの時、白)
|
493
|
+
// wbs,hbs: オリジナルイメージの縦横分割数(>0)
|
494
|
+
// margin: キャンバスのマージン(上下左右の空間)(>0)
|
495
|
+
// frame: フレームの太さ(>=1)
|
496
|
+
//---------------------------------------------------------------------------------------
|
497
|
+
PKLExport int pkl_splitframe(PKLImage pkl, PKLColor backcolor, int wbs, int hbs, int margin, int frame);
|
498
|
+
|
499
|
+
|
500
|
+
/*************************************************************/
|
501
|
+
/** composite(合成) **/
|
502
|
+
/*************************************************************/
|
503
|
+
//---------------------------------------------------------------------------------------
|
504
|
+
// 画像の合成
|
505
|
+
// parentの上にchildを乗せる
|
506
|
+
// parent: ベース(処理後はこのオブジェクトが更新される)
|
507
|
+
// child: 乗せる画像(このオブジェクトは処理しても不可侵)
|
508
|
+
// xpos,ypos: childを乗せるparent上の座標.
|
509
|
+
// transcolor: 透明にする色。NULLの時は透明色の設定なし
|
510
|
+
// * parentとchildは同じカラーモードでなければエラーとなる
|
511
|
+
//---------------------------------------------------------------------------------------
|
512
|
+
PKLExport int pkl_composite(PKLImage parent, PKLImage child, int xpos, int ypos, PKLColor transcolor);
|
513
|
+
|
514
|
+
//---------------------------------------------------------------------------------------
|
515
|
+
// アルファブレンド
|
467
516
|
// parentの上にchildをアルファブレンドで乗せる
|
468
|
-
// <引数>
|
469
517
|
// parent: ベース(処理後はこのオブジェクトが更新される)
|
470
518
|
// child: 乗せる画像(このオブジェクトは処理しても不可侵)
|
471
519
|
// xpos,ypos:childを乗せるparent上の座標.
|
472
|
-
// 必ずparent上の座標でなければならない.
|
473
520
|
// alpha: α値(0-255)
|
521
|
+
// alpha<0の時: 特殊モード(画像の縁ほどアルファを強調する)
|
474
522
|
// alpha=0の時: childは100%で乗る
|
475
523
|
// alpha=255の時:childは 0%で乗る
|
476
|
-
//
|
477
|
-
|
524
|
+
// * parentとchildは同じカラーモードでなければエラーとなる
|
525
|
+
//---------------------------------------------------------------------------------------
|
478
526
|
PKLExport int pkl_alphablend(PKLImage parent, PKLImage child, int xpos, int ypos, int alpha);
|
479
527
|
|
480
|
-
|
481
|
-
//
|
482
|
-
|
483
|
-
|
528
|
+
//---------------------------------------------------------------------------------------
|
529
|
+
// 影付け
|
530
|
+
// backcolor: NULLの時は白
|
531
|
+
// shadowcolor: NULLの時は黒
|
532
|
+
//---------------------------------------------------------------------------------------
|
533
|
+
PKLExport int pkl_shadowframe(PKLImage pkl, int margin, PKLColor backcolor, PKLColor shadowcolor);
|
534
|
+
|
535
|
+
//---------------------------------------------------------------------------------------
|
536
|
+
// 任意の位置に影付きで画像を配置する
|
537
|
+
// shadowcolor: NULLの時は黒
|
538
|
+
//---------------------------------------------------------------------------------------
|
539
|
+
PKLExport int pkl_randomshadow(PKLImage canvas, PKLImage pasteimage,
|
540
|
+
int top, int left, int margin, PKLColor shadowcolor);
|
541
|
+
|
542
|
+
|
543
|
+
/*************************************************************/
|
544
|
+
/** effect(一般的なエフェクト) **/
|
545
|
+
/*************************************************************/
|
546
|
+
// 反転
|
547
|
+
PKLExport int pkl_invert(PKLImage pkl);
|
484
548
|
|
485
|
-
|
486
|
-
PKLExport int
|
549
|
+
// 拡散
|
550
|
+
PKLExport int pkl_noise(PKLImage pkl, int noise);
|
487
551
|
|
488
|
-
|
489
|
-
//
|
490
|
-
|
552
|
+
//---------------------------------------------------------------------------------------
|
553
|
+
// (安易な)セピア
|
554
|
+
// red_weight,green_weight,blue_weight:
|
555
|
+
// red,green,blueそれぞれに対しての重み
|
556
|
+
// 値が大きいほど、その色が強く出る
|
557
|
+
// * RGBのみに対応
|
558
|
+
// * セピアっぽくするのであれば、redの重みを1.0として、他の重みを1.0より小さくする
|
559
|
+
//---------------------------------------------------------------------------------------
|
560
|
+
PKLExport int pkl_sepia(PKLImage pkl, double red_weight, double green_weight, double blue_weight);
|
561
|
+
|
562
|
+
//---------------------------------------------------------------------------------------
|
563
|
+
// (安易な)油絵化
|
564
|
+
// 油絵のようにする
|
565
|
+
// weight: 筆の太さ(というか最頻色走査領域のサイズ)
|
566
|
+
// 例えば、3を指定した場合、近傍3x3の領域の最頻色が選択される
|
567
|
+
// * weightを大きくしすぎると、処理が重くなる。注意せよ
|
568
|
+
//---------------------------------------------------------------------------------------
|
569
|
+
PKLExport int pkl_oilpaint(PKLImage pkl, int weight);
|
570
|
+
|
571
|
+
//---------------------------------------------------------------------------------------
|
572
|
+
// kuwahara(from MemoNyanDum)
|
573
|
+
// kuwaharaオペレータを使った抽象化で油絵のようになる。
|
574
|
+
// pkl_oilpaint()との違いは、エッジがより鮮明であるという点。
|
575
|
+
// range: 調整領域(>=2)
|
576
|
+
// * rangeを大きくしすぎると、処理が重くなる。注意せよ
|
577
|
+
//---------------------------------------------------------------------------------------
|
578
|
+
PKLExport int pkl_kuwahara(PKLImage pkl, int range);
|
491
579
|
|
580
|
+
//---------------------------------------------------------------------------------------
|
581
|
+
// VTR調
|
582
|
+
// colspace; 行の間隔
|
583
|
+
// gst: 横方向のブレ
|
584
|
+
// cst: 行の色差分
|
585
|
+
//---------------------------------------------------------------------------------------
|
586
|
+
PKLExport int pkl_vtr(PKLImage pkl, int colspace, int gst, int cst);
|
587
|
+
|
588
|
+
//---------------------------------------------------------------------------------------
|
589
|
+
// dither
|
590
|
+
//---------------------------------------------------------------------------------------
|
492
591
|
typedef enum {
|
493
592
|
PKL_DITHER_NON, //pkl_dithercolorではdefaultとなる
|
494
593
|
PKL_DITHER_FLOYDSTEINBERG, //default
|
@@ -498,107 +597,142 @@ typedef enum {
|
|
498
597
|
} PKL_DITHER;
|
499
598
|
PKLExport int pkl_dither(PKLImage pkl, PKL_DITHER dither);
|
500
599
|
|
501
|
-
|
502
|
-
//
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
PKL_PAINT_AVE, //モザイク(パターン内の平均色で塗る)
|
507
|
-
} PKL_PAINT_TYPE;
|
508
|
-
|
509
|
-
/* 六角形 */
|
510
|
-
// pw,ph: パターンのサイズ
|
511
|
-
// phのサイズをpwの3倍に設定すると、縦横サイズが同じパターンになる
|
512
|
-
// type: 塗り方式
|
513
|
-
PKLExport int pkl_pattern_hexagon(PKLImage pkl, int pw, int ph, PKL_PAINT_TYPE type);
|
514
|
-
|
515
|
-
/* ひし形 */
|
516
|
-
// pw,ph: パターンのサイズ
|
517
|
-
// phのサイズをpwの2倍に設定すると、縦横サイズが同じパターンになる
|
518
|
-
// type: 塗り方式
|
519
|
-
// ex1) pw=10,ph=10にすると横長のパターン
|
520
|
-
// ex2) pw=10,ph=20にすると縦横同じ大きさのパターン
|
521
|
-
// ex3) pw=10,ph=30にすると縦長のパターン
|
522
|
-
PKLExport int pkl_pattern_diamond(PKLImage pkl, int pw, int ph, PKL_PAINT_TYPE type);
|
523
|
-
|
524
|
-
/* 円 */
|
525
|
-
// pw,ph: パターンのサイズ
|
526
|
-
// phのサイズをpwの3倍に設定すると、縦横サイズが同じパターンになる
|
527
|
-
// type: 塗り方式
|
528
|
-
PKLExport int pkl_pattern_circle(PKLImage pkl, int pw, int ph, PKL_PAINT_TYPE type);
|
529
|
-
|
530
|
-
/* レンガ */
|
531
|
-
// pw,ph: パターンのサイズ
|
532
|
-
// phのサイズをpwの4倍に設定すると、縦横サイズが同じパターンになる
|
533
|
-
// type: 塗り方式
|
534
|
-
PKLExport int pkl_pattern_brick(PKLImage pkl, int pw, int ph, PKL_PAINT_TYPE type);
|
535
|
-
|
536
|
-
|
537
|
-
/* ボロノイ分割(タイプ1) */
|
538
|
-
// zone: ボロノイサイズ(>=2, <w,h)
|
539
|
-
// bordercolor: -1の時は境界線を引かない。境界線色はpkl_colorで作る
|
540
|
-
// test: 真の時、分割シュミレーション図を出力する
|
541
|
-
PKLExport int pkl_voronoi_type1(PKLImage pkl, int zone, int bordercolor, int test);
|
542
|
-
|
543
|
-
|
544
|
-
/* ボロノイ分割(タイプ2) */
|
545
|
-
// count: 母点数(>=10)
|
546
|
-
// bordercolor: -1の時は境界線を引かない。境界線色はpkl_colorで作る
|
547
|
-
// test: 真の時、分割シュミレーション図を出力する
|
548
|
-
//
|
549
|
-
// *type1との違いは、母点がよりランダムに配置されるという点
|
550
|
-
PKLExport int pkl_voronoi_type2(PKLImage pkl, int count, int bordercolor, int test);
|
551
|
-
|
600
|
+
//---------------------------------------------------------------------------------------
|
601
|
+
// 輪郭抽出
|
602
|
+
// edge: エッジの太さ
|
603
|
+
//---------------------------------------------------------------------------------------
|
604
|
+
PKLExport int pkl_edgepaint(PKLImage pkl, int edge);
|
552
605
|
|
553
|
-
|
554
|
-
//
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
// dither: 真の時dither処理する
|
559
|
-
// *RGBのみ
|
560
|
-
// *設定した色数で保存するには、PNGかBMPにする必要がある(JPEGは非可逆のため)
|
561
|
-
PKLExport int pkl_mediancut(PKLImage pkl, int ncolors, int dither);
|
562
|
-
|
563
|
-
/* Neural-Net Quantization */
|
564
|
-
// ncolors: 色数(1..256)
|
565
|
-
// sample: sampling factor(1..30) 1=slowest/best, 30=fastest
|
566
|
-
// *設定した色数で保存するには、PNGかBMPにする必要がある(JPEGは非可逆のため)
|
567
|
-
// *メディアンカットより質のいい減色ができるが遅い。
|
568
|
-
PKLExport int pkl_neuquant(PKLImage pkl, int ncolors, int sample);
|
569
|
-
|
570
|
-
/* Xiaolin Wu */
|
571
|
-
// ncolors::色数(1..256)
|
572
|
-
// *設定した色数で保存するには、PNGかBMPにする必要がある(JPEGは非可逆のため)
|
573
|
-
PKLExport int pkl_wu(PKLImage pkl, int ncolors);
|
574
|
-
|
575
|
-
|
576
|
-
/* ポスタライズ(階調変更) */
|
577
|
-
// level:階調数(1-256) *256を何分割するかということ
|
578
|
-
PKLExport int pkl_posterize(PKLImage pkl, int level);
|
606
|
+
//---------------------------------------------------------------------------------------
|
607
|
+
// 輪郭抽出
|
608
|
+
// threshold: 輪郭強調度(値が小さいほど、輪郭判定は荒くなる-->全体が黒くなる)
|
609
|
+
//---------------------------------------------------------------------------------------
|
610
|
+
PKLExport int pkl_edge(PKLImage pkl, int threshold);
|
579
611
|
|
612
|
+
//---------------------------------------------------------------------------------------
|
613
|
+
// 輪郭抽出
|
614
|
+
// 輪郭を抽出して滑らかに描画する
|
615
|
+
//---------------------------------------------------------------------------------------
|
616
|
+
PKLExport int pkl_contour(PKLImage pkl);
|
580
617
|
|
581
|
-
|
582
|
-
//
|
583
|
-
//
|
584
|
-
|
618
|
+
//---------------------------------------------------------------------------------------
|
619
|
+
// エッジ(輪郭)を強調する
|
620
|
+
// unsharpは画像全体をシャープにするが、これはエッジ部分のみの強調
|
621
|
+
//---------------------------------------------------------------------------------------
|
622
|
+
typedef enum {
|
623
|
+
PKL_FOCUS_DETAIL, //弱い
|
624
|
+
PKL_FOCUS_FOCUS, //中間
|
625
|
+
PKL_FOCUS_EDGES //強い
|
626
|
+
} PKL_FOCUS;
|
627
|
+
PKLExport int pkl_focus(PKLImage pkl, PKL_FOCUS type);
|
585
628
|
|
629
|
+
//---------------------------------------------------------------------------------------
|
630
|
+
// エンボス
|
631
|
+
//---------------------------------------------------------------------------------------
|
632
|
+
typedef enum {
|
633
|
+
PKL_EMBOSS_EMBOSS, //エンボス1
|
634
|
+
PKL_EMBOSS_HEAVY, //エンボス2
|
635
|
+
PKL_EMBOSS_LIGHT, //エンボス3
|
636
|
+
PKL_EMBOSS_LAPLACIAN //輪郭抽出
|
637
|
+
} PKL_EMBOSS;
|
638
|
+
PKLExport int pkl_emboss(PKLImage pkl, PKL_EMBOSS type);
|
586
639
|
|
587
|
-
|
588
|
-
//
|
589
|
-
//
|
590
|
-
|
591
|
-
|
640
|
+
//---------------------------------------------------------------------------------------
|
641
|
+
// カスタムテーブルを設定できるエンボス
|
642
|
+
// mask: マスク配列
|
643
|
+
// row: maskの1行の要素数
|
644
|
+
// col: maskの行数
|
645
|
+
// factor: 輪郭部分の協調度
|
646
|
+
// offset: 輪郭以外の部分の加算色(127:グレー基調・255:白基調)
|
647
|
+
//---------------------------------------------------------------------------------------
|
648
|
+
PKLExport int pkl_emboss2(PKLImage pkl, int *mask, int row, int col, double factor, int offset);
|
649
|
+
|
650
|
+
|
651
|
+
/*************************************************************/
|
652
|
+
/** camera(カメラ撮影風) **/
|
653
|
+
/*************************************************************/
|
654
|
+
//---------------------------------------------------------------------------------------
|
655
|
+
// vignette
|
656
|
+
// color: 透過色
|
657
|
+
// trans: 透過率(0-100%)
|
658
|
+
// radius: 半径
|
659
|
+
// x, y: 中心点
|
660
|
+
//---------------------------------------------------------------------------------------
|
661
|
+
PKLExport int pkl_vignette(PKLImage pkl, PKLColor color, int trans, int radius, int x, int y);
|
662
|
+
|
663
|
+
// ラウンドぼかし(中心から離れるほどぼかしが強くなる)
|
664
|
+
PKLExport int pkl_vaseline(PKLImage pkl, int radius, int x, int y);
|
665
|
+
|
666
|
+
// vignette + vaseline
|
667
|
+
PKLExport int pkl_vv(PKLImage pkl, PKLColor color, int trans, int radius, int x, int y);
|
668
|
+
|
669
|
+
// 銀塩フィルム風
|
670
|
+
PKLExport int pkl_film(PKLImage pkl, PKLColor color, int trans);
|
671
|
+
|
672
|
+
// スポットライト風
|
673
|
+
//PKLExport int pkl_spotlight(PKLImage pkl, int radius, PKLColor color, int trans);
|
674
|
+
|
675
|
+
|
676
|
+
/*************************************************************/
|
677
|
+
/** special(フィルターの組み合わせ) **/
|
678
|
+
/*************************************************************/
|
679
|
+
//---------------------------------------------------------------------------------------
|
680
|
+
// ポスタライズ(階調変更)→ノイズ除去→レベル補正→輪郭抽出
|
681
|
+
// level:階調数(1-256) *256を何分割するかということ
|
682
|
+
// low,high,coeff:レベル補正の値(low=1.5%, high=1.5%, coeff=1.0)
|
683
|
+
// edge: 0>= (0:エッジ線を引かない、1>:エッジ線を引く.指定値の線の太さのエッジを引く)
|
684
|
+
//---------------------------------------------------------------------------------------
|
685
|
+
PKLExport int pkl_edgeposter(PKLImage pkl, int level, double low, double high, double coeff, int edge);
|
686
|
+
|
687
|
+
//---------------------------------------------------------------------------------------
|
688
|
+
// クレヨン風
|
689
|
+
// factor:輪郭部分の強調度(5~80)
|
690
|
+
// bv1, bv2:拡散レベル(2-step)
|
691
|
+
// alpha:合成割合
|
692
|
+
//---------------------------------------------------------------------------------------
|
693
|
+
PKLExport int pkl_crayon(PKLImage pkl, double factor, int bv1, int bv2, int alpha);
|
694
|
+
|
695
|
+
//---------------------------------------------------------------------------------------
|
696
|
+
// 輪郭
|
697
|
+
//---------------------------------------------------------------------------------------
|
698
|
+
PKLExport int pkl_rinkaku(PKLImage pkl, double factor);
|
699
|
+
|
700
|
+
//---------------------------------------------------------------------------------------
|
701
|
+
// あじさい風
|
702
|
+
// zone: ボロノイサイズ(>=2, <w,h)
|
703
|
+
// low,high,coeff:レベル補正の値(low=9.0%, high=9.0%, coeff=1.0)
|
704
|
+
// mil,env:カラーエンボス値(mil=50, env=70)
|
705
|
+
//---------------------------------------------------------------------------------------
|
706
|
+
PKLExport int pkl_hydrangea(PKLImage pkl, int zone, double low, double high, double coeff, double mil, double env);
|
707
|
+
|
708
|
+
//---------------------------------------------------------------------------------------
|
709
|
+
// ふんわりエッジ
|
710
|
+
// level:階調数(1-256) *256を何分割するかということ
|
711
|
+
// low,high,coeff:レベル補正の値(low=1.5%, high=1.5%, coeff=1.0)
|
712
|
+
// threshold:輪郭強調度
|
713
|
+
// alpha:合成割合
|
714
|
+
//---------------------------------------------------------------------------------------
|
715
|
+
PKLExport int pkl_alphaedge(PKLImage pkl, int level, double low, double high, double coeff, int threshold, int alpha);
|
716
|
+
|
717
|
+
|
718
|
+
/*************************************************************/
|
719
|
+
/** scrap(イマイチなシリーズ) **/
|
720
|
+
/*************************************************************/
|
721
|
+
//---------------------------------------------------------------------------------------
|
722
|
+
// 渦巻き
|
592
723
|
// factor: 渦巻き度合い(絶対値で1以下の範囲で指定する。0に近いほど、ゆるやかな渦巻きになる)
|
593
724
|
// * 負数と正数の違いは回転方向
|
594
725
|
// x,y: 渦巻きの中心点(座標が画像内に収まらない場合は、中心となる)
|
595
|
-
// backcolor:背景色
|
596
|
-
//
|
597
|
-
|
726
|
+
// backcolor:背景色(NULLの時は白)
|
727
|
+
// * Junkiさんとことの違いは、ピクセル生成時にバイリニアしていないこと。なので、粗い画像になる
|
728
|
+
//---------------------------------------------------------------------------------------
|
729
|
+
PKLExport int pkl_swirl(PKLImage pkl, double factor, int x, int y, PKLColor backcolor);
|
598
730
|
|
599
|
-
|
731
|
+
//---------------------------------------------------------------------------------------
|
732
|
+
// wave
|
600
733
|
// factor:周期
|
601
734
|
// frequency:振幅
|
735
|
+
//---------------------------------------------------------------------------------------
|
602
736
|
typedef enum {
|
603
737
|
PKL_WAVE_HORZ, //横方向のwave
|
604
738
|
PKL_WAVE_VERT, //縦方向のwave
|
@@ -606,29 +740,47 @@ typedef enum {
|
|
606
740
|
} PKL_WAVE;
|
607
741
|
PKLExport int pkl_wave(PKLImage pkl, PKL_WAVE mode, double factor, double frequency);
|
608
742
|
|
609
|
-
|
610
|
-
|
743
|
+
//---------------------------------------------------------------------------------------
|
744
|
+
// さほど美しくないドット絵
|
611
745
|
// 円の描画を自力でやっているので、微妙な仕上がり品。
|
612
746
|
// zone:ドット化する領域の一辺のサイズ(3..10)
|
613
|
-
// color:ドットの色(
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
//
|
619
|
-
//
|
620
|
-
//
|
621
|
-
//
|
622
|
-
|
623
|
-
PKLExport int pkl_splitframe(PKLImage pkl, int backcolor, int wbs, int hbs, int margin, int frame);
|
624
|
-
|
625
|
-
/* カラーディザー */
|
626
|
-
//weight: 誤差点に確定しなかった色に対する加算色
|
627
|
-
// +255以上の時は完全な白
|
628
|
-
// -255以下の時は完全な黒
|
747
|
+
// color:ドットの色(NULLの時は黒)
|
748
|
+
//---------------------------------------------------------------------------------------
|
749
|
+
PKLExport int pkl_dots(PKLImage pkl, int zone, PKLColor color);
|
750
|
+
|
751
|
+
//---------------------------------------------------------------------------------------
|
752
|
+
// カラーディザー
|
753
|
+
// weight: 誤差点に確定しなかった色に対する加算色
|
754
|
+
// +255以上の時は完全な白
|
755
|
+
// -255以下の時は完全な黒
|
756
|
+
//---------------------------------------------------------------------------------------
|
629
757
|
PKLExport int pkl_colordither(PKLImage pkl, int weight);
|
630
758
|
|
631
|
-
|
759
|
+
//---------------------------------------------------------------------------------------
|
760
|
+
// fantasy風(from Jimmy Educational NPR system)
|
761
|
+
// 明度のみにsobelフィルタによる輪郭強調を施す
|
762
|
+
// edgeweight: 輪郭強調度(0..5, 0:輪郭強調しない、5:輪郭最大強調)
|
763
|
+
// mix: オリジナル画像の明度との合成割合(0..1, 1で100%オリジナルの明度を生かす=>輪郭強調されない)
|
764
|
+
// saturation: 彩度調整(0..5, 0:最低(色がなくなる),1:彩度に調整をかけない,1>:彩度があがる)
|
765
|
+
// hue: 色相(0..360)
|
766
|
+
// * 輪郭抽出を明度に適用するため、黒(all=0)の場合には白とびします。
|
767
|
+
//---------------------------------------------------------------------------------------
|
768
|
+
PKLExport int pkl_sobelpaint(PKLImage pkl, int edgeweight, float mix, float saturation, float hue);
|
769
|
+
|
770
|
+
//---------------------------------------------------------------------------------------
|
771
|
+
// イラスト調
|
772
|
+
// gap: エッジ判定の際の重み付け
|
773
|
+
// edge: エッジの重み(0が最もエッジが強い。0..20程度が目安)
|
774
|
+
// gammaint: 絵柄のガンマ評価値(0:暗く評価、100:明るく評価。0..100)
|
775
|
+
//---------------------------------------------------------------------------------------
|
776
|
+
PKLExport int pkl_illust(PKLImage pkl, int gap, int edge, int gammaint);
|
777
|
+
|
778
|
+
//---------------------------------------------------------------------------------------
|
779
|
+
// カラーエンボス
|
780
|
+
// mil: ハイライト(1..400)
|
781
|
+
// env: 環境光(1..100)
|
782
|
+
//---------------------------------------------------------------------------------------
|
783
|
+
PKLExport int pkl_color_emboss(PKLImage pkl, double mil, double env);
|
632
784
|
|
633
785
|
|
634
786
|
#if defined __cplusplus
|