Dunno, this texgen is actually the 4th generation of the series. Gen1 was quite n00b, gen2 was quite nice, and I used it a lot to generate GUI-buttons 'n stuff. Gen3 was far better, but still became a mess due its size. All 3 were made with B+, and all filters were in one big Select-EndSelect. In an IDE without code-folding you can make a guess about my motivation to work with such an ugly brute.
Gen1..3 truly aren't worth releasing!
Generation 4 however is different. No huge Select construction, but a rather small engine that handles the script, sends out events, and each filter is a seperate function that has one variabele representing the engine, so that one has access to all relevant stuff.
From the start I hoped it would work out but (knowing myself) I didn't expected it to, hence I estimated it would become a big junkyard better to keep :-) . Currently tho, with over 60 textures and modifiers, things are looking fine. There's still no code bloat. Minus the primitive GUI there're about 4400 lines of code right now, over 1700 for textures, over 1500 for modifiers. And if I don't include the textures- and modifier-files then the app just works.. it doesn't do anything useful (e.g. nothing), but it works.
The nice thing is that anyone could make a filter, as there's *very little* one needs to know. Even the filter-helptext is inside the actual filter-function!
So, this simpleness might make it interesting for release, under the condition that users actually contribute public filters. :-) A public filter is as simple as posting the function, and nothing more. In a number of cases one might want to change some core functionality, in this case, each such core function is a method in a class.. quite simple all. What this core class does is house a few basic graphical instructions that one always needs on various places, such as drawrect, bresenhamline, drawpixel, limit, blockaverage, etc. etc. Eventually, when filters start to look like eachother it might be a good idea to thin them out and move their code to this core class.
Note that there're no native gfx instructions in the whole texgen, everything is just manually filling mem. The only image-related function is the ToImage method which converts a buffer to an image. So, native stuff like drawing lines and rects is all native code. This makes the whole thing quite portable even..
So, I need to soup up a number of things, optimize more, make more filters, perhaps inprove the GUI.. but I will consider a public release, as long as ppl contribute with new filters!
Its current list o' modifiers:
Diffuse '0
TopLeftRelief '1
SetChannels '2
Invert '3
Intensitymove '4
Dither '5
Bittrunc '6
ChannelCopy '7
Blur '8
ChannelShift '9
Block '10
Tile '11
Sinedistort '12
SinedistortRGB '13
Blockblur '14
Solarize '15
Max '16
Min '17
Brightness '18
BrightnessRGB '19
Sinecolor '20
Scanlines '21
Hmirror '22
Vmirror '23
PaletteMatcher '24
Binary8 '25
Diffuse8 '26
<under construction> '27
Limit '28
Rotozoom '29
Spherezoom '30
Sinestar '31
8M '32
PaletteFinder '33
Move '34
Mix '35
Normalize '36
And textures:
Clear '0
Box '1
Plot '2
Xline '3
Yline '4
Line '5
; Line2 '6 <disabled>
Bezier '7
Openbox '8
DatastreamRGB '9
DatastreamI2 '9
VectorGFX '11
SetStreampointer '12
; Rays '13 <disabled
Hrays '14
; Radialsines '16 <under construction>
Randompath '17
MSX1palette '18
C64palette '19
C64palette2 '20
C64palette3 '21
DatastreamI1 '22
4PointGradient '23
PerlinOctave '24
Buffercopy '25
Envmap '26
Sines '27
Buffercopy2 '28
Buffercopy3 '29
Vectorlandscape '30
Tunnel '31
Light '32
ok, one more brag :P
Perlin noise
Tunnel
Light
Buffercopy3 (with scaling)
Gen1..3 truly aren't worth releasing!
Generation 4 however is different. No huge Select construction, but a rather small engine that handles the script, sends out events, and each filter is a seperate function that has one variabele representing the engine, so that one has access to all relevant stuff.
From the start I hoped it would work out but (knowing myself) I didn't expected it to, hence I estimated it would become a big junkyard better to keep :-) . Currently tho, with over 60 textures and modifiers, things are looking fine. There's still no code bloat. Minus the primitive GUI there're about 4400 lines of code right now, over 1700 for textures, over 1500 for modifiers. And if I don't include the textures- and modifier-files then the app just works.. it doesn't do anything useful (e.g. nothing), but it works.
The nice thing is that anyone could make a filter, as there's *very little* one needs to know. Even the filter-helptext is inside the actual filter-function!
So, this simpleness might make it interesting for release, under the condition that users actually contribute public filters. :-) A public filter is as simple as posting the function, and nothing more. In a number of cases one might want to change some core functionality, in this case, each such core function is a method in a class.. quite simple all. What this core class does is house a few basic graphical instructions that one always needs on various places, such as drawrect, bresenhamline, drawpixel, limit, blockaverage, etc. etc. Eventually, when filters start to look like eachother it might be a good idea to thin them out and move their code to this core class.
Note that there're no native gfx instructions in the whole texgen, everything is just manually filling mem. The only image-related function is the ToImage method which converts a buffer to an image. So, native stuff like drawing lines and rects is all native code. This makes the whole thing quite portable even..
So, I need to soup up a number of things, optimize more, make more filters, perhaps inprove the GUI.. but I will consider a public release, as long as ppl contribute with new filters!
Its current list o' modifiers:
Diffuse '0
TopLeftRelief '1
SetChannels '2
Invert '3
Intensitymove '4
Dither '5
Bittrunc '6
ChannelCopy '7
Blur '8
ChannelShift '9
Block '10
Tile '11
Sinedistort '12
SinedistortRGB '13
Blockblur '14
Solarize '15
Max '16
Min '17
Brightness '18
BrightnessRGB '19
Sinecolor '20
Scanlines '21
Hmirror '22
Vmirror '23
PaletteMatcher '24
Binary8 '25
Diffuse8 '26
<under construction> '27
Limit '28
Rotozoom '29
Spherezoom '30
Sinestar '31
8M '32
PaletteFinder '33
Move '34
Mix '35
Normalize '36
And textures:
Clear '0
Box '1
Plot '2
Xline '3
Yline '4
Line '5
; Line2 '6 <disabled>
Bezier '7
Openbox '8
DatastreamRGB '9
DatastreamI2 '9
VectorGFX '11
SetStreampointer '12
; Rays '13 <disabled
Hrays '14
; Radialsines '16 <under construction>
Randompath '17
MSX1palette '18
C64palette '19
C64palette2 '20
C64palette3 '21
DatastreamI1 '22
4PointGradient '23
PerlinOctave '24
Buffercopy '25
Envmap '26
Sines '27
Buffercopy2 '28
Buffercopy3 '29
Vectorlandscape '30
Tunnel '31
Light '32
ok, one more brag :P
Perlin noise
Tunnel
Light
Buffercopy3 (with scaling)