pikl 0.2.8-x86-mswin32 → 0.3.0-x86-mswin32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|