forked from clouddan4/amiga2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
memo_ATS_TODO.txt
1326 lines (1104 loc) · 54.3 KB
/
memo_ATS_TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
□まだ (not yet)
■対応済み(done)
-------------------
640X400(現画面) frame(0,x,y)
640X400(fix, undo) frame(1,x,y)
frame320point(0,x,y) ライトテーブルがオンの場合の描画画面
320X200(push0,pop0)
通常 scrntoems((2+1)*animofset+1)
lt_on frame320toems(0,(2+1)*animofset+1)
frame320point(1,x,y) ブラシ, アニメブラシの作業画面
ブラシ作業画面の退避フレーム cutbrushpage := (2+1)*animofset+3
frame320toems(1,cutbrushpage)
□スペアブラシの退避フレーム (2+1)*animofset+4
アニメブラシの保存フレーム
AnimNo.2 ((1+1)*animofset+1~n)
ブラシfig, アニメブラシfig の場合の参照フレーム
blbrushpoint(x,y) → frame320point(1,x,y)
現状: 小数点を上下・左右のpointに振り分け、平均をとっている
□3X3=9point での処理に変更
paintframe(x,y) paintルーチンでの作業フレーム
paintframe は、frame320 なので 640X400 に対応不可
→ 訂正: paintframe は、640X400 1plane 単色
■scrntoframe320ルーチン作成が必要か?(fix0, undo0)
(640X400(fix, undo) の場合は、実vramにマッピングされたframe間copy)
frame320toframe は、frame1 しか対応していない(実vramは、frame0)
GRAD2.PAS に類似ルーチン有
■frame320toframe → frame320toframe1 に名称変更(undoバッファにコピー)
FRAMELIB.PAS, PGLOBAL.PAS, USR2.PAS を変更
■frametoframe320 → frame1toframe320 に名称変更(undoバッファからコピー)
FRAMELIB.PAS, PGLOBAL.PAS, USR2.PAS を変更
■frame320toframe0 を追加(実vramにコピー)
FRAMELIB.PAS を変更
■frame0toframe320 を追加(実vramからコピー)
FRAMELIB.PAS を変更
□animofset(AMIGA2.PAS, A2.PAS) の変更 68 → 128 (16*8)
EMS使用ページ数 915 ( > 128*3*2=768 )
■(2+1)*animofset+1 320X200画面の push0, pop0
□ライトテーブルの追加フレームとして共有して問題ないか検討する
□(2+1)*animofset+2 320X200画面の作業フレーム
□move_emsframe(a,b) を追加 (FRAMELIB.PAS)
□swap_emsframe(a,b) を追加 (FRAMELIB.PAS)
□sWap push0 を、この作業フレームを利用する方法に変更
□upicop.pas を変更
□PGLOBAL.PAS を変更
■(2+1)*animofset+3 ブラシ作業画面の退避フレーム
□current_br_page := (2+1)*animofset+3
□(2+1)*animofset+4~12 (current_br_page + 1~9) スペアブラシの退避フレーム
□(2+1)*animofset+13,14,15,16 を作業画面の退避用バッファとして確保
実装予定のスプライトチップ・エディタでの画面退避
screen0 → screen1 のコピールーチンは、paintframe と等価なバッファを new で確保
□どちらも共通にして、必要時に new で確保するようにすることを検討
USR2 に|grad塗|を追加する場合、paintframe をクリアせずに再利用する必要有り
□マッピングされたEMSフレームを直接 frame320 として扱えないか検討
■アニムフレーム数を変えた場合、ブラシや退避フレームがズレる
→ DOS\setup2 で、EMSフレームの割当てを animofset*3 以上で確保していなかった
--------------------------------------------------------------------------
■Screen 640X400 の画像を保存するルーチンが無い
→ AGRAPH2.PAS の IFFsave ルーチンに、640X400画像モードを追加
そのルーチンを呼び出している uemsop.pas, picop.pas を変更
(640X400画像の色-明度順ソートは、picop.pas の compress1/n メニューの中)
□MAG形式画像のLoad
→ MPS のサンプルコードを実装してみたが、buffer=64K 以上のファイルでエラー
IFF-load のように逐次blockread のメドがつくまで保留
■新たに ULOADER.PAS を追加して、異形式画像ローダーをまとめる
■AGRAPH2.PAS, UPICOP.PAS よりMAG画像のロードルーチンを削除
■MAG画像のロード(MPS のサンプルコード)をサポート
□buffer=64K より大きいファイルに対応
■暫定処置として、64Kサイズを超える場合は処理をスキップ
■FRM画像(エスキース、マルチペイント)のロードをサポート
直接vram0にロード不能?なので、new(vramb)を中間バッファにした
パレットファイルがあれば読み込む
■パレットファイルが無い場合にエラー
→ loadpal でエラー判定の前に exist(pal_path) でエラー判定する
■FRM画像のセーブをサポート、パレットファイルもセーブ
■iffsaveルーチンより高速なので、>tmp の処理を置換え(パレットはセーブしない)
■AGRAPH2.PAS にFRM画像のload&saveルーチンを移行
■UPICOP.PAS のルーチンを入れ替え
■SCREENOP.PAS のルーチンを入れ替え
■PGLOBAL.PAS にルーチンを追加
■[<],[>],[,],[.]キー割り当ての変更・追加
(copyanimnext, copyanimback とキーが重複するため)
■[6],[7]の機能を入れ替えた
■AGRAPH2.PAS にパレットのload&saveルーチンを移行
■PALOP.PAS の該当ルーチンを削除
□CEL画像(KISS 着せ替えのパーツ)のロードをサポート
□KCFファイル画像(KISS 着せ替えのパレット)のロードをサポート
□ARV画像(アートマスター、キャラクタツクール)のロードをサポート
□ZIM画像(Z's staff Kid98)のロードをサポート
■SMC画像(SMC-777C GEDIT)のロードをサポート
仮想FDDイメージからファイルを取り出す 1DDTOOL.EXE は、16bitプログラム
(64bitOS環境では) msdos 1DDTOOL.EXE r 仮想FDDイメージ
L3ディスクエクスプローラ(L3 Disk Explorer)
SMC-777用に作成されたFDDイメージ内部のファイルにアクセス
拡張子がPICのママだとX68Kの形式と区別できないので 'SMC' にリネーム
ボーダーカラーの設定は無視する
■partfilename(pathname : flnam; var dir,name,ext : flnam ) → AGRAPH2.PAS
■disk関連のルーチンを AGRAPH2.PAS に集約
■AGRAPH2.PAS から 常駐パレット, child communicate 関連を削除
■\PST からの include を廃止、sysbrush.inc を親ディレクトリにコピー
■\PST に、リソース類を移動。(brush.ptn, tone.ptn, ... )
■HELP で、終了(右クリック)のチャタリング (PGLOBAL.PAS procedure help)
→ waitrbutton の後に offbutton を追加
■PALEDIT で、パレットの fix,undo が機能していない
→ 機能していた
□AnimNoが0と決めうちしているところを修正して、任意のAnimNoに対応させる
□パレットの管理もAnimNoごとに行う
□UEMSOP.PAS も変更
□トップメニューの検討 (UPAINT.PAS)
描画| | |拡大|特筆|実験| | |Anim|画面|色 |設定|Help|終了
→ 描画|変形|加工|特筆|実験|拡大|CELL| BG |Anim|画面|色 |設定|Help|終了
→→ 描画|特筆|実験|図形|拡大|Brsh|CELL| BG |Anim|画面|色 |設定|Help|終了
■システム設定メニューの検討 (PGLOBAL.PAS systemset)
Screen| Micky| Grid | BrOfs|Brwait|AutoBr|Frm0&1|ExelBr| | Info | Help
→ Screen|Micky /BrWait/ Grid /exclBr|Br_ofs|AutoBr/Frm0&1| | Info | Help
□exclBr(グリッドが設定された場合のブラシカットのドット調整) の再検討
■初期設定をONに変更、gridx <> 1 の場合のチェックを導入
□gridx <> 1 の場合だけではなく、gridy <> 1 もチェック
□それぞれで、処理を分ける(x:=x-1, y:=y-1)
□逆から選択された場合の調整の処理をチェック
■アニメautoscreen で、同座標に連続してブラシを置く場合、br_wait_ON だと不便すぎる
→ br_wait_ON のまま、lineツールで座標を記憶させて始点と終点を一致させ描画
■animframe0,1 の連動をデフォルトではOFFに変更
■描画設定メニューの検討 (SUBMENU.PAS brushprefset)
b-Hand|a-Hand| |autoCt|dither| Light| | | | | Help
→ BrHand/AbHand/BrNot0/-Jaggy|階調塗/dither/autoCt/Scan幅/ + 縁 |透過台| Help
■メニューを分割
→ BrHand/AbHand/BrNot0/-Jaggy| | | | | |透過台| Help
→ 境界塗|free塗| 再塗 |境設定|Grad種/Grad色/回= /dither/autoCt/幅= |塗not0| ?
■/BrNot0/ ブラシの色0を透過色とみなす
brushtype = (brover,brbeta) で切り替え
■アニメブラシをベタで適用したい場合の設定が、カットブラシ側にしかない
→こちらに移動(カットブラシ選択メニューも今後の追加ルーチン予定で残す)
■/-Jaggy| ブラシの拡大縮小処理の際、補完処理を行うかどうか
明度順階調画像でない場合、補完処理をOFFできるようにする
br_jaggy : boolean で切り替え
PGLOBAL.PAS blbrushpoint ルーチンを変更
PGLOBAL.PAS blpoint ルーチンもついでに変更
[yes] バイリニア補完(デフォルト)
[no] c = point(x,y)
□透過台(ライトテーブル) back2のフレーム番号を固定に切り替え可能に
→ □現状の-1, -2 に追加フレームとして、emsframe (2+1)*animofset+5
□emsframe (2+1)*animofset+1 と共有して問題ないか検討する
□画面 → 追加フレーム
□画面・グリッド表示 → 追加フレーム
□画面・パースガイド表示 → 追加フレーム
□画面・透視ガイド表示 → 追加フレーム
□|画面|メニューの検討 (screenop.pas)
表W裏|表>裏|表<裏| cls | rev |x反転|y反転|180転| >tmp| <tmp| Fix |Undo |Help
□|表>裏| → |表>Ov| に変更 (|表>裏| は、キーコマンドでサポート)
□|表<裏| → |表<Ud| に変更 (|表<裏| は、キーコマンドでサポート)
□|x反転| fix したframe1を参照して処理
8bitの反転は、テーブル処理(参考:pst1.5ソース bitrev.pas)
■テンポラリ画像ファイルへの入出力 >Tmp, <Tmp
→ PIC\TMP.FRM に上書き保存
□フィルタ加工のメニューは、ここに入れられないか検討
□模様生成(セルオートマタ等)メニューは、ここに入れられないか検討
■[複]→[対]、[対]→[源]、[ M]→[⇒] に変更
筆|色|覆|[]|B]|A]|複|対|効| M|
→ 筆|色|[]/[B/[A|源/効|mk|対|⇒|
■Tile → 網 として、階層が上のメニューを 筆|色|網 に変更
筆|色|網|[]/[B/[A|源/効|mk|対|⇒|
□|筆|メニューの検討
|標準筆7種|追加筆| |←|[]|編|反| X| Y| T|逆|替| ?
|標準筆7種|定義筆| |←|<<|編|反| X| Y| T|保|替| ? BRUSH_02.PTN
□| | 編集対象の筆(lastbrush)
□|←| 現在の筆を | |(lastbrush) へコピー
□|[]| 画面から| |筆を設定
□筆パターンの画像を読み込む
□現画面をバックアップ、リストア
□|<<| 編集対象の筆をユーザー定義へコピー BRUSH_02.PTN
□|編| | |筆編集モードへ移行
□|反| 編集対象の| |筆を 反転
□| X| 編集対象の| |筆を X-Flip
□| Y| 編集対象の| |筆を Y-Flip
□| T| 編集対象の| |筆を 90°右回転
□|逆| 標準筆7種の並びを逆にする
□|保| ユーザー定義筆を保存 BRUSH_02.PTN
■|替| 筆定義ファイルの切り替え
const patternfilename : string[12] = 'BRUSH.PTN';
→ var に変更 'BRUSH.PTN', 'BRUSH_01.PTN'
→ ディレクトリ下に変更 string[16] = 'PST\BRUSH.PTN'
■切り替え時、メニューの筆が二重に描画される
→ dispbrushtable で、0の部分もカラー1で埋める
□切り替え時、| |筆を保護する
■メニュー選択で '|標準筆7種|追加筆| |' 以外の場合、現在の筆番号を維持する
□|色| カラーサイクル・モード
□ カレントカラー → サイクル
□ スポイトカラー → サイクル
□ 一定に色循環するモード
□ ラインスタイルによって色循環するモード
□|網|メニューの検討
|B/ グラデ17種 /F|追加パターン| |←|[]|編|反| X| Y| T|逆|替| ?
|追加パターン|追加定義パターン| |←|<<|編|反| X| Y| T|保|替| ? TONE_02.PTN
■|B/ 2色トーンパターンの bgbolor を選択
■|B/ bgbolorが0の場合、画面の色を保護するように変更
→ bgcolor=0 で、c=tempc とした(簡易解決)
□Brshルーチンのように、独立して処理すべき?
■デフォルトのbgcolor=0
■|F/ 2色トーンパターンの fgbolor(カレントカラー)を選択
■TONE_02.PTN の場合を設定
□| | 編集対象のパターン(lasttone)
□|←| 現在のパターンを | |(lasttone) へコピー
□|[]| 画面から| |パターンを設定
□網パターンの画像を読み込む
□(画面左上部)2色トーンパターン画像から、fgbolor,bgcolor,パターン番号を設定
□(画面右下部)トーンパターン画像から、| |(lasttone) へコピー
□現画面をバックアップ、リストア
□|<<| 編集対象のパターンをユーザー定義へコピー TONE_02.PTN
□|編| | |パターン編集モードへ移行
□|反| 編集対象の| |パターンを ビット反転
□| X| 編集対象の| |パターンを X-Flip
□| Y| 編集対象の| |パターンを Y-Flip
□| T| 編集対象の| |パターンを 90°右回転
□|逆| グラデ17種のパターンをビット反転(並びが逆になる)
□|保| ユーザー定義パターンを保存 TONE_02.PTN
■|替| パターン定義ファイルの切り替え。現状は|Tone|と共有
tonefilename : string[12] = 'TONE.PTN';
→ var に変更 'TONE.PTN', 'TONE_01.PTN'
→ ディレクトリ下に変更 string[16] = 'PST\TONE.PTN'
□切り替え時、| |パターンを保護する
□メニュー選択で 'B/グラデ17種/F|追加パターン| |' 以外の場合、現在の網番号を維持する
■カレントタイルの表示が見づらい
→ disptiletable で、カレントタイルは枠をつけた
□(源)|網|メニューの検討
□奇数行(16dot単位)を半ずらしパターン
□奇数列(16dot単位)を半ずらしパターン
□現在のパターンと| |パターンを交互に千鳥配置
□2色トーンパターンのグラデパターン間ローテート
□筆形状カットブラシ[] → パターンブラシ[] に変更
(筆ルーチンを利用したカットだと15X15になっていてタイルペイントがいまいち)
○パターンブラシ[] 選択時
□全角文字選択の削除
□ファイルから選択した文字列をアニメパターンとする
□2色タイルパターンの選択を追加(IFFファイル)
□3色タイルパターン生成の選択を追加
□パターンの選択を追加(IFFファイル)
□パターンの選択(IFFファイル)で、アニメパターンへの対応
□パターンの編集
○カットブラシ[B
隅-隅 | 中-隅 | 円 | 楕円 |文字列 | cell | x= | y= | ?
cutbrushtype = (cutcorner,cutbox,cutcir,cutelps,cutstring,cutcell)
隅-隅 |中-隅 | 円 | 楕円 |文字列| x320 |Bank= | cell | x= | y= | ?
cutbrushtype = (cutcorner,cutbox,cutcir,cutelps,cutstring,cutall,cutbank,cutcell)
■selectルーチンで、通常と逆から選択するとBOXラインが見えない
FMMOUSE.PAS の revbox を修正(場合分けの厳密化&変数の誤代入の修正)
□ revxyline を2セット(select2point)でイイのでは?
■画面が640X400の場合、320X200領域外でのカットが無効になっている
→SUBMUNU.PAS selectcutbrush ルーチンを修正
■HELP表示の後、ブラシ選択済みの動作になる
getitem(themenu,item) の前行に selectcutstyle := false;
□|中-隅 | の削除 (メニュー領域不足のため)
□|文字列| の削除? (エミュレータでは、日本語関連キー入力が不完全 & メモリの節約)
□ ''enter の場合、テキストファイルから選択できるようにする
□| x320 | 320X200の範囲を、ブラシとして切り取り
□|Bank= | 現状、ems にコピーされてるブラシの数を1から複数選択可能にする
(DeluxePaint のように、スペアブラシで十分?)
Brush Bank | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |s0p|
□procedure animscreen 'b'呼び出しで, Brush Bank ←→ 320X200
□ブラシ→スペアブラシ間で変形アニムブラシ
□| cell | x,y での選択範囲で、ブラシを切り取り
□procedure animscreen からも呼び出しできるようにする
□進行方向、座標相対関係などにより、ブラシの Overlay/Underlay を切替(惑星が太陽を公転)
□進行方向、座標相対関係などにより、ブラシの X-flip, Y-flip などを切替
□裏画面マスクに応じて、fixscreenした画像とブラシの Overlay/Underlay を切替
□ブラシ変形モードを追加(x_flip,y_flip,x_bend,y-bend,拡大縮小回転,四隅自由変形,...)
変形したブラシに新たなバッファを割当てるとバッファオーバーの可能性有
→ 変形フラグと変形座標のみで、いちいち毎度に変形させる。
□ブラシ変形をアニムブラシに変換
□カットブラシ[B を、[回転・拡大・縮小・アニメ]に対応させるまでの暫定策を検討
(回転だけなら、すでに渦潮が [utrans2 (かなり複雑なオプション)] にある)
→ [回転・拡大・縮小・アニメ] に特化した別ルーチンを [utrans2] に用意
○アニメカットブラシ[A
隅-隅 | 円 |Cel→AT|Cel→MT|AnimNo2|総数16 | x = | y = | ? ';
cutanimbrtype = (cutabcorner,cutabcir,cutab_cel_at,cutab_cel_mt,cutab_anim2)
隅-隅 | 円 |Cel-At|Cel-Mt|AnimN2|総=16 | x= | y= | ? ';
■HELP表示の後、ブラシ選択済みの動作になる
getitem(themenu,item) の前行に selectcutanimbr := false;
■アニメブラシのカットフレーム数を選択可能にする animbrframe: integer
□スプライト・シート → アニメカットブラシ
□|Cel→AT| x,y,カットフレーム数から、選択範囲内を自動的に登録
□|Cel→MT| x,y の選択範囲を手動で、カットフレーム数分を選択して登録
■|AnimNo2| EMSop での対応が前提として、x,y,カットフレーム数を設定
○カットブラシ・フィギュア[Bf
■画面が640X400の場合、320X200領域外でのカットブラシtool形状塗り([Bf)が破綻している
■SYSBRUSH.INC の fillline ルーチンを修正
real := integer*integer 演算で、real にinteger値が代入されていた
(integer*integer > 32k で、real < -1)
→ +0.001 を式に挿入 & 演算の順番を変更 (sbbrushfig, sbanimfig)
■scanpaint ルーチンを介さず、直接fillline ルーチン を呼んだ方が効率的では?
paintframe 全体マップが必要な'グラデ塗り円外' の場合分けが必要となる
バケツ塗りでも、scanpaint が必須なので現状通り
□[Bf塗りの場合、x,y それぞれの繰り返し数を設定可能にする
□line系 & Ntatall の場合は、ブラシを進行ベクトルに向けて回転変形させる
カットブラシに対する基準角度を任意で設定可能にする
□line系 & continue の場合は、ブラシをビットマップストローク・ブラシに変形
x,y それぞれの繰り返し数を反映できるようにする
■|源| メニュー名称&並びの整理 SUBMENU.PAS
色 |表画|裏画|Undo|Tile|Dist|Grad|Patn|PtCy|Brsh|Bfig|AniB|Afig
→ 色 |網 |裏画/Undo/下画/転写|Grad| [] | []c| [B | [Bf| [A | [Af| | |Help
→→ 色 |網 | [] / [B / [Bf/ [A / [Af|裏画/Undo/下画/転写|Patn|Grad|Filt|Efct|Help
色 |網 |裏画/Undo/下画/転写|Grad| [] | [B | [Bf| [A | [Af|CEL |CELA|Patn|Filt|Help
sbinktype = (sbfill,sbmae,sbura,sbtemp,sbtile,sbsita,sbgrad,
sbpatn,sbpacy,sbbrush,sbbrushfig,sbanim,sbanimfig)
→ sbinktype = (sbfill,sbtile,sbura,sbtemp,sbsita,sbdist,sbgrad,
sbpatn,sbpacy,sbbrush,sbbrushfig,sbanim,sbanimfig)
■対象元[表画] 機能確認 point(x,y) と point(x,y) の効果となり、意味がない?
→ 削除。表画の[inc],[dec]は、一旦コピーした先を参照先として行う
■[Dist] を [下画],[転写] に分ける
→ [Dist] 選択は、直接参照先を指定するようにする
□現在の指定が'参照先','参照元'なのか明示する
■[下画],[転写] で、参照元・参照先の二つのカーソルを表示
□|Grad| メニュー名称&並びの整理
円 |縦中|横中|菱中|角中|斜中|斜逆|縦 |縦逆|横 |横逆|横外|逆外|中外|円外|星
→ 円 |縦m|横m|角m|菱m|斜m|斜R|縦 |縦R|横 |横R|x->|x<-|x<>|x><|形 |Bv |BvR|星
gradtype = (en,entate,enyoko,enhisi,enkaku,ensya,hansya,tate,hantate,
yoko,hanyoko,yokogai,hanyokogai,enyokogai,encount,hosien);
→ gradtype = (en,entate,enyoko,enkaku,enhisi,ensya,hansya,tate,hantate,
yoko,hanyoko,yokogai,hanyokogai,enyokogai,hanenyokogai,
encount,bevel_in,bevel_in_rev,hosien);
■|星 |ルーチンの線条数の値を多角形の値で指定できるようにする
→ すでに、星型の角数に対応していた
■追加: 'x><'(hanenyokogai) Xラインごとの長さに応じてグラデ、'x<>'(中外)の逆
■追加: 'Bv '(bevel_in) ベベルパターン(外形線より内側へ一定のグラデ)
■グラデ幅(=スキャン範囲)の設定をどこで行うか検討する
■追加: 'BvR'(bevel_in_rev) bevel_in の反転グラデ
■追加: 'B外'(bevel_out) ベベルパターン(外形線より外側へ一定のグラデ)
■paintframeスキャン範囲の拡大が必要になる
→ scanpaint から別ルーチン(bevel_out_paint)を呼んで処理
□Grad色階調ルーチンを経由していないので、2値誤差とかが無効になる
□Grad色階調ルーチンを独立させて、別ルーチンからも利用できるようにする
■'効果'指定、'mask'指定が無効になる
point tmpc, maskcolor[tmpc] ルーチンがfillline内で指定されている
→ bevel_out_paint内に該当ルーチンを追加した
→ 縁取りルーチンへ移動して、|Grad| メニューより削除した
注意: 変数color は、var の systemparam.color 変数c は、sbset(x,y) でのカラー
→ ルーチン内で変更に注意。下位ルーチンで同名変数宣言しないこと
□|[]| メニューの検討
□基本の描画方法を選択できるようにする
□screen axis: 画面の位置を基準にしてタイルを並べる(デフォルト)
□brush axis : タイルを並べる基準となるのが、描画を開始した位置
□paint brush: タイルパターンを筆定義パターンとみなして描画
□| []c| を廃止して、| [] | のメニューで選択できるようにする
□|効| メニュー名称&並びの整理
通常|平均|比明|比暗|差絶|加算|減算|乗算| inc| dec|Tone|scrn|Wr-B|AlpB|Over|Undr
■| inc| dec| でブラシ側の色が +1, -1 されている
→ 画面側の色を +1, -1 されるように修正
■|mk| メニュー名称&並びの整理
Sp|Cr|Iv|bc|bD|bA|Ok| ?
→ sp/反/無|bA/bD/無|ok| ?
■裏画面マスクの動作が逆では?(現状 0 がマスクされる)
→ 逆にした。(マスク反転して転送では手間が増えるため)
■裏画面マスク-デジタルでの挙動が変。maxcolorのみがマスク
→ プログラムミスを修正した(sysbrush.inc)
■裏画面マスク-アナログでの挙動が変。[比較明]が効かない、マスク対象でも描画される
→ プログラムミスを修正した(sysbrush.inc)
□裏画面マスクに、|bX| を追加。maskに応じてオーバーレイ、アンダーレイの切り替え
□メニューに空きが無いので、|ok| を削除?
□裏画面マスクをZバッファとみなして重ね合わせをコントロール
□paintframe を裏画面に転送する機能があれば便利か?検討
ペイントした領域を(undo で復帰させた画像にたいして)反転マスクとして利用
(要は、マジックワンド範囲選択のような使い方)
・新規転送(新規マスク範囲)
・裏画面とOR合成(マスク範囲に追加)
・裏画面から減算(マスク範囲から除外)
□|対| メニュー名称&並びの整理
OFF |Cycle/ |Place|Centr|X -fp|Y -fp|XY-fp| Tile| 千鳥| 市松|x分割|y分割
→ OFF :| 点対( /中心)|x-fp /y-fp /xy-fp| Tile/x千鳥/y千鳥/ 市松(x /y )
■|中心)選択で、[座標中心に復帰]を兼ねる
→ positionchenge ルーチンを追加した
□エッシャーパターンを追加
http://www.randmax.jp/escherpattern/
□エッシャーの反転タイリング(モーフィング)を追加
https://plaza.rakuten.co.jp/nakabisya/diary/201305110001/
https://toyokeizai.net/articles/-/8776?page=2
|⇒| TOOL-Morph メニューの検討
□menu1:
□menu2:
□menu3:
線型 |放物線| Trail| Step / ↓
□color を漸次変化させるオプションを設ける
□line, curve, circle を移動パスとして選択可能にする
□等速、加速度を選択可能にする
□ラインオプションで、N_Total の分割点ごとにエフェクトルーチンを呼べるようにする
パラメータ: 座標、方向ベクトル(角度)、筆の大きさ
□先に、カットブラシでの sbbrushfig ルーチンを実装したほうが楽かも
□アニムブラシでの sbanimfig ルーチンを実装
□[C_inc],[C_dec]モード時に、ブラシの拡大縮小
□角度をもったトゲを交互に
□ツルマキの発生
□二分木の再帰図形
□ラインオプションで、始点と終点ごとにエフェクトルーチンを呼べるようにする
□矢印
□ロケット、ミサイル、鉛筆
□チューリップなどの草植物
□ニョロニョロ
○多角形
■di=0 の次のパラメータは何?
→ 回転角だった
■[正多],[星] で、回転角をマウス選択(or 数値入力)できるようにする
→ 数値入力のまま(TOOL-Morph のため)
□di=0 のパラメータは、右回り 左回り のブーリアン型にして誤入力を防ぐべきか?
□[自由]の追加
TOOL-Morph を考慮すること
□di=0 のパラメータを、[自由],[正多],[星] にも適用
→ 数値入力として、TOOL-Morphに対応させる
■バラの選択時、外円径を選択すると、外円径が0になるバグ
→ select の until → repeat 後に offbutton を追加
■いつのまにか外円径が0になるバグ再び
→ 外円径を write でテキスト表示させると、おさまったようにみえる
■星型の[C_dec]モード時、頂点に向かって減衰するようにしたい
→ 線分の始点と終点を入れ替える方法にした(パスとして使う場合には不具合)
■星型の[C_inc]モードを追加
□対数螺旋の追加
□ポリゴン座標列のファイルへの保存・読み込み・編集
○多角形ペイント
□[自由] 、[正多]、[星]、メニューの追加
TOOL-Morph を考慮すること
□[円],[楕円] で、右回り 左回り のパラメータを追加、
□[円],[楕円] で、回転角をマウス選択(or 数値入力)できるようにする
□[円塗],[楕円塗] で、回転角をマウス選択(or 数値入力)できるようにする
□現在共有しているselectlinestyleを、line,curve,box と分ける必要がある
□塗メニューの検討
境界塗|free塗| 再塗 |境設定|Grad種/減色法/回= 1/dither/autoCt/幅= 7|塗not0| ?
■境界塗(バケツ塗り) と free塗(グラデーション用)を選択可能にする
■free塗の試し塗り時、マスク, 裏マスク, ライトテーブルを考慮していない
■free塗の場合、試し塗りで上書きしてしまうので、効果モードが無効
→ 処理の前後を変更: FixScreen -- 試し塗り -- UndoFix -- scanpaint
□free塗が、シンメトリー・モードに対応していない
■再塗(rePaint)を実装。 paintframeをクリアせずに、変更した設定で再ペイント
現ルーチンでは永久ループとなるため、実行後にモードを'free塗'に戻す
□edgetype = none の場合、scanpaint を実行
□edgetype <> none の場合、edgepaint を実行
□|境設定| メニューの検討 (ペイント処理後、外形線を描画するかどうかの設定)
→ 同系のDrawツールの描画では無く、paintframeに対しての縁取りルーチンで行う
無 |縁内/縁外|Bv外|凸内/凸外/凹内/凹外|平均|幅 2|縁色|明色/暗色|
edgetype = (none, edge_in, edge_out, bevel_out,
deko_in, deko_out, boko_in, boko_out, avg_blur)
□'縁内'(外形線より内側へ縁色で縁取り)の追加
□'縁外'(外形線より外側へ縁色で縁取り)の追加
□'Bv外'(外形線より外側へ一定のグラデ) |Grad|メニューからこちらに移行
メニューで、'Bv外'のバリエーションを選択できるようにする
bevel_out_type = (standard, bevel_out_rev,
bevel_out_yama, bevel_out_tani)
■'\'
□'/'(外形線より外側へ一定のグラデの反転)の追加
□'\/'
□'/\'
□'凸内'(外形線より内側へ明色,暗色で凸陰影付き)の追加
□'凸外'(外形線より外側へ明色,暗色で凸陰影付き)の追加
□'凹内'(外形線より内側へ明色,暗色で凹陰影付き)の追加
□'凹外'(外形線より外側へ明色,暗色で凹陰影付き)の追加
□'平均'(平均値によるグラデ)の追加
メニューで、'平均'のバリエーションを選択できるようにする
avg_type = (avg_out, avg_in, avg_mid)
□'AvgO'(外形線より外側)の追加
□'AvgI'(外形線より内側)の追加
□'AvgM'(外形線を中央値として)の追加
□境界幅 デフォルトは edge_range = 2
□境界幅の境目の点列をアンチエイリアスpsetするかどうかの検討
□縁色 デフォルトは edge_color = 1
■bgcolor デフォルトは 1
□明色 デフォルトは mei_color = 12
□暗色 デフォルトは ann_color = 6
■|減色法|メニューの検討
|16階調 /8階調下/8階調上|3色階調|2値Baye/2値網点/2値渦巻/2値誤差/2値乱数/明度+
gradmaxcolortype =
(col16,col8_dw,col8_up,col3,col2_bay,col2_tone,col2_spin,col2_err,col2_rnd)
明度加算値 hilight_plus : integer
■2値塗りの場合、カラーによっては擬似階調がほとんど無くなる
→ 2値塗りの場合、maxcolor を引数としてcurrentcolor,currentbgcolor振分けた
■systemparam,color が引数なので、maxcolorに代入すると不具合
→ 一時的にsystemparam,colorをバックアップして処理したあと元に戻す
■2値塗りの場合、currentcolorの領域を増やすため、オフセット値を加算
■試しに、+4 して様子をみる
■|明度+ | として入力可能にする
□明度値加算を廃止して、GIMPのようにオフセット・パラメータに変更
■'2値化 ランダム'の追加を検討 | 16階調 |2値:組織的| 2値:乱数 | で切替え
type gradmaxcolortype = (16col,2col_mat,2col_rnd)
var gradmaxcolorstyle: gradmaxcolortype
■現在の'2値:組織的'の参照Dither配列をBayerパターンに変更
http://www2.tbb.t-com.ne.jp/mark/diza.html
AGRAPH2.PAS の Dither を修正(Bayerパターンに準拠、似非キースと同等)
■'2値化 網点'の追加を検討 Dither配列を網点パターン
AGRAPH2.PAS に Dither2 を追加
■'2値化 渦巻'の追加を検討 Dither配列を渦巻パターン
AGRAPH2.PAS に Dither3 を追加
渦巻のDither配列を http://caca.zoy.org/study/part2.html に変更
■'2値化 誤差拡散'の追加を検討
filllineルーチンで誤差を拡散させる一時バッファの導入に見合う効果に疑問
→ 次(右隣)のピクセルのみ誤差を引き継がせて効果を確認する
■単純ベタ画像となってしまう
→ すでに0,15に変換したカラー値を誤差に代入していたのを修正
右隣のピクセルのみ拡散では、かなり品質が低下する
■通常の誤差拡散にするか、Usr1|grad|ルーチンに任せるか検討
→ FloydSteinbergを実装してみたが、以下の問題がある
■filllineルーチンをcallで、星型などyposが同じになる場合に不具合
スキャンバッファの入替条件の判定が必要(同じ ypos かどうか)
ypos_old <> ypos ならば、バッファの入替 & ypos_old = ypos
■円など x が負数となる場合、runtime error 205
場合分けを減らすため: スキャンバッファ scan0[-1..rmaxhor + 1]
x >= 0 のみスキャンバッファを処理
■'8階調下'の追加を検討 パレット0~7を8階調明度順とみなして描画
■足りない階調をディザで補完する
→ パレットが奇数で < 15 の場合、次のパレットとのディザカラーにする
→→ パレットが奇数の場合、x,y の格子模様で次色と振り分け
注意!: 8階調の場合でも16階調から生成するため、maxcolor が基準となる
■PICOP: COLOR_OP.PAS の [&] 16 ->8color ルーチンを再検討
■EMSOP: COL_OP_Z.PAS の [&] 16 ->8color ルーチンを再検討
■'8階調上'の追加を検討 パレット8~15を8階調明度順とみなして描画
■足りない階調をディザで補完する
■'3階調'の追加を検討。足りない階調をディザで補完する
■カラー0にならない
→ グラデ塗りの後処理で、c < 1 → c := 1 としていたのを変更
bgcolorを設定すれば従来通りの意図で描画可能
16階調では、c = 0 → c:= bgcolor に変更
■'3階調'選択時に midcolor を選択するようにする
■選択カラーによっては、階調が極端に減少する
→ 場合分けでの、colorバックアップ&リストア・ルーチン修正
■パレット8-15のディザ配列割当てを、パレット0-7と同等にしたい
→ color8,15 を規定値で、color9-14 を -1 してディザ配列
□現状の、dither配列がBayerパターンのママでいいかどうか検討
■2値塗りの場合、maxcolor でも斑点がつく
color > dither[][] を color >= dither[][] に変更した
□/回= / cyclic 循環数の設定 grad_times = 1
■/dither/ グラデ塗りの場合、乱数でディザリングをかける
ditheron : real で切り替え
[yes] ディザリング有(デフォルト ditheron = 0.5)
[no] ディザリング無(ditheron = 0)
□現状0.5のディザリング乱数値を変更できるようにする
現状、グラデ距離に比例して、自動的に乱数の幅を増加しているのでは?
■/autoCt/ 円外グラデ塗りの中心を自動に設定
paintautocenter: boolean で切り替え
■/幅= | スキャン範囲(Bevel でのグラデ幅)の設定 scan_range = 7
■|塗not0| ペイント系において、選択図形内の not0 のみ対象とする paint_not0: boolean
ペイント処理で、マスクカラー0 との違いは、グラデーション塗りの場合
適用が限られるので、|設定| の項目で設定する
■Box塗り対応
■円塗り対応
■楕円塗り対応
■free塗り対応
試し塗り時のカラーに影響されない処理を考慮
試し塗りが下地と同色だと見難いので (color - 2) mod (maxcol + 1)
■キー入力の再検討 PGLOBAL.PAS animscreenルーチンの変更
AutoBr ブラシを置くたびにフレ-ムを進める key[a]トグル key[A]OFF
消去 画面を選択した色で消去します key[0]0クリア Key[C]320クリア
ライトテーブルon/off key[t]トグル key[T]OFF
現座標を表示 key[@]トグル
現在位置を記憶 key[p]
記憶した位置に移動 key[P]
前回描画の開始点に移動 key[(]
前回描画の終了点に移動 key[)]
画面中心に移動 key[=]
グリッドを有効に key[g]トグル key[G]メニュー
([j]で、裏画面のタイルチップを[g]でパターンブラシに拾う準備)
■16X16, 32X32 のタイルに合わせて切り替える仕組みを設ける
→ temp_gridx, temp_gridy で、前回の選択を記憶する
■あらためて動作確認すると、グリッドがズレる
→ fmmouse.pas: x-(x mod gridx),y-(y mod gridy) に変更
■sWap push0 を追加 key[w]
■カーソルキーで、色・タイルパターン・筆の切り替え
■エミュのマウスホイールを↑↓に割り当てられるのを考慮して検討
key[↑] inc burush_num key[↓] dec burush_num
BRUSH.PTN の0-7の順番を逆にした
□selectbrush に対する systemparam.currentbrush の変数スコープが?
key[→] inc color_num key[←] dec color_num
key[]] inc tone_num key[[] dec tone_num
■TONE_02.PTN の場合、0-4の範囲
( key[}] inc tile_num key[{] dec tile_num )
key[PageUp] Over key[PageDown] Under インジケーターを付けた
key[b] key[B] 筆選択
key[i] 色をスポイトで key[I] 色選択
key[n] トーンスポイト key[N] トーン選択
■key[n] 筆領域の色をカウントして、fgbolor,bgcolor,パターン番号8を設定
■TONE_02.PTN の場合、パターン番号2を設定
□色面積比でfgbolor,bgcolorを設定だが、カラーナンバーのほうがイイ?
( key[m] タイルスポイト key[M] タイル選択 )
■ルーペでのキー入力変更
key[↑] 画面を上に移動 key[↓] 画面を下に移動
key[→] 画面を右に移動 key[←] 画面を左に移動
Key[PU] 色pset +1 Key[PD] 色pset -1
key[i] 色をスポイト key[I] 色選択
Key[]] 色番号を1増 Key[[] 色番号を1減
Key[}] 色pset Key[{] 色スポイト
○|図形|の検討。基本は多角形入力ツール
参考: FantaVision, NAPLPS, FLASH, FM-7アニメツール
□多角形の入力、編集
□入力したデータの拡大、縮小、回転、線形変換 → 変形アニメーションに対応させる
□同数の点の多角形間を変形アニメーション、トレイル描画
□任意の多角形から、任意の多角形への変形アニメーション、トレイル描画
四角形や単純形状のプリセット
□作成したデータを多角形ツールで読み込み(ツールモーフィングで利用可能にする)
□リンク構造を持った図形(たとえば棒人間)のサポート
Stykz 棒人形のアニメーション
https://www.stykz.net/animations.php
https://forest.watch.impress.co.jp/docs/review/406182.html
Pivot Animator 棒人間が自由自在にアクションするアニメーション
https://pivotanimator.net/index.html
https://forest.watch.impress.co.jp/article/2008/09/12/pivot.html
http://hsm.on.coocan.jp/pivot-animator.htm
http://e0166.blog89.fc2.com/blog-entry-525.html
□リンク構造を持った図形をボーンとみなして、カット(アニメ)ブラシの貼り付け
○|拡大|の検討
□ブラシ形状の描画モードを追加
□2色トーンをサポート。key[n] トーンスポイト key[N] トーン選択
□トーンスポイト: ブラシ形状範囲の色をカウントして、2X2の格子トーンをセット
key[}] inc tone_num key[{] dec tone_num
○Usr1
□メニュー名称&並びの整理
|水引 /ボケ /砂目 |滲み |cycle|流線 /流蔓 |
→ |水引/ボケ/砂目|Blot|色回|1Dca|2Dca|grad|凸凹|集中/射光| |
□ブラシ形状に依存している筆ルーチンに、ブラシ選択メニューを追加
■ライトテーブルに対応
pset(x,y,c) → lt_pset(x,y,c)
point(x,y) → lt_point(x,y)
□|水引| の検討
■ブラシの指定を brushbox[systemparam.currentbrush] に変更
■描画中のクロスカーソルを廃止
□|ボケ| の検討
■ブラシの指定を brushbox[systemparam.currentbrush] に変更
■描画中のクロスカーソルを廃止
□|Blot| の検討
■ブラシの指定を brushbox[systemparam.currentbrush] に変更
■ブラシの形状に応じて、処理する範囲を変更できるようにする
■ブラシ選択メニューを追加
■一点ごとにblotするのをやめて、ブラシを描画後まとめてblotに変更
□|色回| の検討
■ブラシの指定を brushbox[systemparam.currentbrush] に変更
□ [Ctdec=(全長)],[Ctinc=(全長)],[全長]
□|grad| 画面を paintframe に転送して、ペイント・ルーチンを呼ぶ
paintframe をクリアしないで、色々塗りを試行錯誤可能に (DigiPaint3 での Undo Redo)
むしろ、グラデ塗り専用ルーチンでもイイのでは?
□cyclic 循環数の設定は、こちらのみのルーチンで検討
□GRAD2.pas との住み分け
□画面を x-スキャンラインした結果を paintframe に転送
□画面 ← paintframe
□グラデ塗りに、ベベルパターン(外形線より一定のグラデ)の追加
□paintframe を y-scanpaint
□|凸凹|凸凹の面を構成する。テキスト用外枠や金属的パネルの表現に使用
ZPaint https://www.grafikerler.org/forum/konu/zpaint.13153/
8bitpccgeditor http://blawat2015.no-ip.com/~mieki256/diary/20160110.html
こちらは、実装予定のBGマップエディタの機能と重複するかも?
○Usr2
■メニュー名称&並びの整理
流線/流蔓/ひも/鎖 |水流|煙 |火炎|電撃|雨雪|雲 |星 |岩石|草葉|花 |
→ 索/蔓/紐/鎖|煙|火|光|電|水|雨/雪|雲|星|石/岩|草/葉/花/竹|
■ライトテーブルに対応
pset(x,y,c) → lt_pset(x,y,c)
point(x,y) → lt_point(x,y)
SmoothPlot → lt_SmoothPlot
□|索(キャット・スプライン)|の検討
Dot / Smooth | 色 |効果mode | fix / undo | Quit
→ 筆 | 色 |筆変化|色変化|描画種|Sm方法|i= |d= | Exec /Smooth| Quit
→→ 筆 | 色 |筆変|色変|描種/特種|Sm法|i |d | | | |Exec/Smoo|Quit
■システムマウスカーソルだと、ライトテーブル on でゴミが残る
→ crosscursor に変更
■筆形状選択に対応
→ crosscursor → showrevcursor に変更
■アンチエイリアス(Smooth)が効いていない
→ lt_SmoothPlot に受け渡すx,y値をrealにする必要がある
■筆形状の描画間隔を指定可能にする
積算距離カウンターの比較値を |i= | で、設定可能にした
■autoanimscreen 導入の検討
■筆形状の描画間隔をカウントして、奇数/偶数で場合分けできるようにする
odd(counter_sum): counter_sum が奇数のときに true ,偶数のときに false
□筆変化モード | 固定 | 循環 | A->B |A-B-C-A |A-B-C-B |ランダム|
□色変化モード | 固定 | 循環 |ランダム| | |
□描画種 |単線|複線|三線|虹条|
→ |単線/set |複線/set |三線/set |虹条/set |
set | 筆 | 色 |筆変|色変|[] |
ブラシの進行方向の単位ベクトル (vx, vy)
ブラシの進行方向の垂直方向の単位ベクトル upper ( vy, -vx)
ブラシの進行方向の垂直方向の単位ベクトル down (-vy, vx)
■|d= | で、2nd,3rd線の主線からの距離を入力可能に
□|複線|
■2ndブラシ、2ndカラーを選択できるようにする
□|三線|
■3rdブラシ、3rdカラーを選択できるようにする
□|蔓(流蔓)|の検討
筆 |色 |Gradmode|効果mode|Smooth |全長= |Exec |Quit
→ 筆 | 色 |筆変化|色変化|描画種|Grad種|Sm方法|L= | Exec /Smooth| Quit
■[dec] の名称を [全長] として、現在値も表示
■BRUSH.PTN の0-7の順番を逆にしたことでの不具合を修正
■SYSBRUSH.INC での該当ルーチンも修正
■アンチエイリアス(Smooth)のルーチンを|索(キャット・スプライン)|に合わせる
t_SmoothPlot に受け渡すx,y値をrealにする
□アンチエイリアスが on だと、グラデーションがマダラになる
□(書始めと書終わりの)両端でブラシ最小となるモードを追加
□筆変化モード | 固定 | 減少 | 増加 | 増減 |
□色変化モード | 固定 | 減少 | 増加 | 増減 |
□色減少モードを追加
□色増加モードを追加
□描画種 | 単色 | Grad |Grad_R|
□Sm方法 | 明部 | 暗部 | 平均 |
□total ごとに蔓を巻かせる
□一定間隔で、枝を発生するツタ
□|ひも|の検討
筆 | 色 |Gradmode| | | Exec Ov| Exec Ud| quit
→ 筆 | 色 |描画種|Grad種| | |Exe Ov/Exe Ud| fix / undo | Quit
■描画モードの Over と Under を切り替え(描画途中でも、キーで切り替え可能に)
→ 結局、Under の場合は、fixscreen を参照するようにした
自動fixscreenをやめて、手動fixscreenにした(任意の時点でコントロールできる)
autoscreen がキーバッファをクリアするため、同等のルーチンを組み込んだ
拡張キーは、一度readkeyで#0の場合、再度readkeyで読み取る
■専用のキー入力ルーチンをやめて、animscreen ルーチンに変更
animscreen のあとに setbuff を追加
Over/Under 切替えは、mix = mxover, mix = mxundr で場合分けして処理
□ねじりを二本、三本と追加
□スクリプト(pset,line,curve,...)をロードして、自動描画に対応
□スクリプト内の座標を変形させてのアニメーション
□|煙| の再検討
現在の円半径増加方法を変更
□最小、最大半径を設定可能にする
□最初の座標からの距離に比例して半径を増加させる
現在の描画方法を変更
□加算 or inc で描画
□円内の粒子密度を正規分布にする。粒子数を設定可能にする
現在の描画方法に追加
□セル画風(Amiga_16color パレットのうち3色)
http://www.geocities.jp/popqjp/Tips/Smoke01.html
http://www.geocities.jp/popqjp/Tips/Smoke02.html
□|光| の検討
□レーザー光線
□スペシウム光線
http://tokusatusokuhou.blog.fc2.com/blog-entry-1632.html
□|電撃| UFRACTAL '放電'の 簡易&マウスで座標指定バージョンとして実装
ボカシ処理、残光処理は別プログラム(UEMSOP, UFILTER)にまかせる
■中点変位法法による再帰分割アルゴリズム
■arctan関数では、-π/2~π/2までなので、場合わけが複雑
https://detail.chiebukuro.yahoo.co.jp:443/qa/question_detail/q1423819324
→ θ = 2*arctan(b/(√(a^2+b^2) + a)) を使う
□中点からの乱数での変位量、再帰レベルを入力可能にする
□筆を四角として描画。大きさを変更可能にする
□box, circle, ellipse に対応
□ランダムに分岐枝を発生させる頻度と再帰レベルを設定可能にする
■アニメ対応: 単純繰り返し(固定点で実行の繰り返し)
□アニメ対応: 単純移動(ラインの始点・終点を移動しながら実行の繰り返し)
□アニメ対応: ピンポン移動
□|葉| の検討
□ゆらゆら揺れるアニメーション
親子関係をつけて根元側ほど低周波、先端ほど高周波で揺らす
http://www.geocities.jp/popqjp/Tips/Snake/ChildAndParents.html
-----------------------------------------------------------------------------
□1Dセル・オートマタの改良
□横書き対応。分割数で繰り返し、スクルールアニメに対応
□分割線で、円柱グラデパターンと合成
□対数螺旋座標変形で、スクロールアニメ
極座標変形で、スクロールアニメを参照して検討すること
□正三角形の線分120度2回転によるタイリング
□gradater.pas を変更。メニューによって処理を選択、8方向はテンキーに合わせる
□グラデ範囲の幅を指定可にして、その両側を 0,maxcolor に塗り分ける
□ワイプアニメ用マスクとして使えるように幅移動をアニメ化
□種々のパターンのプリセットをメニューで選択できるようにする
□GRAD2.pas(自動グラデーション) を変更
□距離0の点のグラデ処理を色指定可能にする(0:現状)
■グラデーションModeを追加。 3: →1←
□グラデーションModeを追加。 スキャンラインごとのmax,minをプリスキャン
□グラデーションModeを追加。 中心グラデ
グラデ中心: 画面中心(プリセット),入力,paintframeを全スキャン
■画面0を スキャンXラインした結果を paintframe に書き込み
■画面0を スキャンYラインした結果を paintframe に書き込み
■グラデ塗りに、ベベルパターン(外形線より内側へ一定のグラデ)の追加
→ paintframe=1 の周囲30X30をスキャンして、color 0 との最小距離を求める
■color設定を反映させる (結果 = color/maxcolor*最小距離)
■color値に対して結果が > maxcolor の場合の処理を検討(上限でカット?)
→ 結果が > maxcolor の場合、maxcolor との差分を maxcolor より引く
■グラデ塗りに、ベベルパターン(外形線より外側へ一定のグラデ)の追加
→ paintframe=0 の周囲30X30をスキャンして、color 0 との最小距離を求める
□color値に対して結果が < 0 の場合の処理
■グラデ塗りに、ベベルパターン7(外形線より右下外側へ一定のグラデ)の追加
→ paintframe=0 の周囲30X30を限定してスキャン
□color値に対して結果が < 0 の場合の処理
■グラデ塗りに、Avg-out(外形線より外側へ、平均値によるグラデ)の追加
周囲15X15をスキャンして、平均値を求める
■'平均'に変更。スキャン範囲を変数として入力可能にした
■グラデ塗りの場合、グラデ幅を指定可能にする
→ スキャン範囲を変数として入力可能にした
■スキャン範囲=6 の場合、全面color設定で塗り潰される場合がある
→ 条件判断をreal値で行ったあと、integer値を使用した為の誤差
■アニメ対応。グラデ幅を増減
0: スキャン範囲(固定値)
1: 0 → スキャン範囲(一定増加)
2: 0 → スキャン範囲(一定増減) → 0
3: 0 → スキャン範囲(sin増減) → 0
処理フレームごとに中断ルーチン(if keypressed then exit)を追加
■'縁取り' を追加
増減アニメのため、条件(paintframe = 0 & 対象外)で pset(x,y,0)
■'トリミング' を追加
元の画像を残して上書き(増減アニメには不向き)
■グラデ塗りに、'凸-out'(外形線より外側へ凸陰影付き)の追加
照明側、影側の色を入力できるようにした
Bevel-out と Solid-out ルーチンを統合した
■グラデ塗りに、'凹-out'(外形線より外側へ凹陰影付き)の追加
■グラデ塗りに、'凸-in'(外形線より内側へ凸陰影付き)の追加
Bevel-in と Solid-in ルーチンを統合した
■グラデ塗りに、'凹-in'(外形線より内側へ凹陰影付き)の追加
■グラデーションModeを追加。 4: 始点,終点の色を拾得して始点-終点グラデ
■グラデーションModeを追加。 5: 始点,終点の色を拾得して始点-Maxcolor-終点グラデ
□Preset-Animation を、メニューで選択して実行できるようにする
□縁取りの輪が広がっていくアニメ
□UFILTERカテゴリへ移動
■かごめルーチンを検討 (upatgen2 → s\pt5.pas)
参照先のアニメ・ナンバーの優先度を 0>1>2>0>.... として、合成
■優先順序を選択可能に
□サンプルパターンで、色がズレていく?
■アニメフレーム 1,2,3 から参照先画像位置にコピーする機能をつける
paintで、ライトテーブルをオンにすると、確認しながら描画できる
■アニメフレーム 1,2,3,4 から合成。(1,2,3だとトータルで奇数フレームのみ有効)
この場合、優先順序は選択できない
□かごめルーチンをペイントシステムにも導入すべきか?
■Totalstep が多い場合、アニメ・フレームを進めず総フレーム数に収めるモード
変数dotstepを導入。(i mod dotstep)=0 でないとautoscreenさせない
→ とりあえずは、円描画ルーチンのみに適用した
→ line, 曲線, 楕円ルーチンにも適用した
line, 曲線のループ変数: 0 → n-1 :(i+1) mod dotstep
円, 楕円のループ変数: 1 → n :i mod dotstep
□参照先をアニメフレームに、優先度を 1>2>3>..>最終フレーム>1 として合成
とりあえずは 1>2>3>1 の簡易バージョン
□複眼ルーチンを再検討 (ufilter → s\fuku.pas)
六角形タイルパターンをディストーションフィルタとして元画像を変形させる
■現状の s\fuku.pas は、s\slit.pas に変更
→ 結局、削除した