mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-04-05 07:45:07 +01:00
Integrated PaletteSelect to PaletteEditor
This commit is contained in:
parent
836b9640f5
commit
030d9ca5b6
2 changed files with 103 additions and 127 deletions
src/Home/PaletteEditor
|
@ -1,19 +1,16 @@
|
|||
/*This was done with <CTRL-SHIFT-L> template code.
|
||||
It's conceptually easy to do a ctrl,
|
||||
but tedious. You have complete freedom.
|
||||
|
||||
See $LK,"CCtrl",A="MN:CCtrl"$.
|
||||
*/
|
||||
|
||||
//Start of autocreated Code
|
||||
#define SLIDER_RANGE 255
|
||||
#define SLIDER_SPACING 28
|
||||
#define SLIDER_BORDER 2
|
||||
|
||||
|
||||
#define PALETTES_PATH "~/PaletteEditor/Palettes/"
|
||||
|
||||
|
||||
#include "~/PaletteEditor/PaletteSelect"
|
||||
|
||||
I64 current_palette = "temp";
|
||||
|
||||
I64 SELECTED_COLOR = 0;
|
||||
|
||||
|
||||
|
||||
I64 l,r,t,b;
|
||||
|
||||
|
||||
|
@ -37,6 +34,43 @@ U0 DrawCtrlSlider(CDC *dc,CCtrl *c)
|
|||
|
||||
CSliderState *s=c->state;
|
||||
|
||||
|
||||
//GrPrint(dc,0,50,"%s", current_palette);
|
||||
|
||||
I64 size=(c->win_task->pix_width/16);
|
||||
I64 border=size/16;
|
||||
I64 SLIDER_AMOUNT=3;
|
||||
I64 i,k,j,l;
|
||||
I64 pos,col;
|
||||
CBGR24 tempColor;
|
||||
|
||||
///////////////////////
|
||||
// CURRENT SELECTION //
|
||||
///////////////////////
|
||||
|
||||
// current color box preview
|
||||
dc->color=BLACK;
|
||||
GrPrint(dc,10,10,"Preview:");
|
||||
|
||||
// pixel loop for current color preview
|
||||
for(i=0; i<=12; i++)
|
||||
for(j=0; j<=12; j++)
|
||||
{
|
||||
tempColor = gr_palette[SELECTED_COLOR];
|
||||
if(i<border || i>12-border || j<border || j>12-border) tempColor = 0x000000;
|
||||
DrawPixel(c->win_task->pix_left + 78 + i, t + 7 + j, tempColor);
|
||||
}
|
||||
GrPrint(dc,10,26,"Current Color: #%d", SELECTED_COLOR+1);
|
||||
dc->color=SELECTED_COLOR;
|
||||
GrPrint(dc,95,10,"#%x%x%x", gr_palette[SELECTED_COLOR].r,
|
||||
gr_palette[SELECTED_COLOR].g,
|
||||
gr_palette[SELECTED_COLOR].b);
|
||||
|
||||
|
||||
////////////
|
||||
// SLIDER //
|
||||
////////////
|
||||
|
||||
//box
|
||||
dc->color=LTRED;
|
||||
GrRect(dc, c->left,
|
||||
|
@ -47,25 +81,24 @@ U0 DrawCtrlSlider(CDC *dc,CCtrl *c)
|
|||
GrRect(dc, c->left+SLIDER_BORDER,
|
||||
c->top+SLIDER_BORDER,
|
||||
SLIDER_SPACING*4+2-2*SLIDER_BORDER,
|
||||
SLIDER_SPACING*2+SLIDER_RANGE-2*SLIDER_BORDER);
|
||||
SLIDER_SPACING*2+SLIDER_RANGE-2*SLIDER_BORDER);
|
||||
|
||||
//slider
|
||||
dc->color=BLACK;
|
||||
I64 SLIDER_AMOUNT=3;
|
||||
I64 i,k,j,l;
|
||||
|
||||
for(i=1; i<=3; i++){
|
||||
for(i=1; i<=3; i++)
|
||||
{
|
||||
GrLine(dc, c->left+i*SLIDER_SPACING+i-1,
|
||||
c->top+SLIDER_SPACING,
|
||||
c->left+i*SLIDER_SPACING+i-1,
|
||||
r c->top+SLIDER_SPACING+SLIDER_RANGE-1);
|
||||
c->top+SLIDER_SPACING+SLIDER_RANGE-1);
|
||||
}
|
||||
|
||||
//values
|
||||
dc->color=LTRED;
|
||||
I64 pos,col;
|
||||
|
||||
for(i=1; i<=3; i++){
|
||||
for(i=1; i<=3; i++)
|
||||
{
|
||||
|
||||
if (i==1) { pos=s->left_pos; col="B";}
|
||||
if (i==2) { pos=s->middle_pos;col="G";}
|
||||
|
@ -85,10 +118,9 @@ r c->top+SLIDER_SPACING+SLIDER_RANGE-1);
|
|||
7,5);
|
||||
}
|
||||
|
||||
|
||||
//color preview
|
||||
I64 size=(c->win_task->pix_width/16);
|
||||
I64 border=size/16;
|
||||
////////////////////
|
||||
// COLORS PREVIEW //
|
||||
////////////////////
|
||||
|
||||
dc->color=8;
|
||||
GrRect(dc,0,c->win_task->pix_height + size*1.5 - size*2 ,c->win_task->pix_width,size*0.75);
|
||||
|
@ -96,7 +128,7 @@ r c->top+SLIDER_SPACING+SLIDER_RANGE-1);
|
|||
for(i=0;i<16;i++){
|
||||
for (j = 0; j <= size; j++){
|
||||
for (k = 0; k <= size; k++){
|
||||
CBGR24 tempColor=gr_palette[i];
|
||||
tempColor=gr_palette[i];
|
||||
// black borders
|
||||
if(k<border || k>size-border || j < border || j>size-border) tempColor=0x000000;
|
||||
// color preview
|
||||
|
@ -120,65 +152,17 @@ r c->top+SLIDER_SPACING+SLIDER_RANGE-1);
|
|||
|
||||
}
|
||||
|
||||
// current color box preview
|
||||
dc->color=BLACK;
|
||||
GrPrint(dc,10,10,"Preview:");
|
||||
// pixel loop for current color preview
|
||||
for(i=0; i <=12; i++)
|
||||
for(j=0; j<=12; j++){
|
||||
tempColor = gr_palette[SELECTED_COLOR];
|
||||
if(i<border/2 || i>12-border/2 || j<border/2 || j>12-border/2) tempColor = 0x000000;
|
||||
DrawPixel(c->win_task->pix_left + 78 + i, t + 7 + j, tempColor);
|
||||
}
|
||||
GrPrint(dc,10,26,"Current Color: #%d", SELECTED_COLOR+1);
|
||||
dc->color=SELECTED_COLOR;
|
||||
GrPrint(dc,95,10,"#%x%x%x", gr_palette[SELECTED_COLOR].r,
|
||||
gr_palette[SELECTED_COLOR].g,
|
||||
gr_palette[SELECTED_COLOR].b);
|
||||
|
||||
|
||||
// buttons
|
||||
|
||||
//I64 l1 = StrLen("LOAD");
|
||||
|
||||
//GrPrint(dc, 100,30,"$$CM+CX,%d,4$$$$BT,\"%s\",LE=%d$$\n", -l1 / 2, "LOAD", 1);
|
||||
//DocPrint(dc, "$$CM+CX,%d,4$$$$BT,\"%s\",LE=%d$$\n", -l1 / 2, "LOAD", 1);
|
||||
|
||||
// Add Save/Load button?
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
U0 PELoad(Bool prompt)
|
||||
{
|
||||
|
||||
U8 file_path = PopUpPickFile("::/Home/PaletteEditor/Palettes");
|
||||
|
||||
//FileExtRemove(file_path);
|
||||
//StrLastRemove(file_path, "/", file_name);
|
||||
//StrFirstRemove(file_name+1, StrLen(file_name), without_first_ch);
|
||||
//ToUpper(*upper_case);
|
||||
|
||||
U8 file = FileRead(file_path);
|
||||
|
||||
I64 temp_file;
|
||||
|
||||
I64 i;
|
||||
// StrPrintHex might be better?..
|
||||
for (i = 0; i < COLORS_NUM; i++)
|
||||
{
|
||||
StrFirstRemove(file,",", temp_file);
|
||||
gr_palette[i] = Str2I64(temp_file,16);
|
||||
}
|
||||
LFBFlush;
|
||||
// PaletteSetTemp;
|
||||
|
||||
}
|
||||
|
||||
U0 PESave(Bool prompt, CCtrl *c)
|
||||
{
|
||||
//U8 old_draw_it = c->draw_it;
|
||||
CDoc *doc = DocNew("~/PaletteEditor/Palettes/MyPalette.CC");
|
||||
CDoc *doc = DocNew(PALETTES_PATH);
|
||||
I64 i;
|
||||
// U8 tmp_name= doc->filename.name;
|
||||
// I64 file_name;
|
||||
|
@ -310,47 +294,40 @@ U0 SliderDel(CCtrl *c)
|
|||
Free(c);
|
||||
}
|
||||
|
||||
//End of autocreated Code
|
||||
|
||||
public U0 PaletteEditor()
|
||||
{
|
||||
|
||||
SettingsPush;
|
||||
MenuPush(
|
||||
"File {"
|
||||
" New(,'.');"
|
||||
//" ChangeDir(MESSAGE_CMD,PSMF_CD);"
|
||||
" Open(,CH_CTRLO);"
|
||||
" SaveAs(,CH_CTRLA);"
|
||||
" Abort(,CH_SHIFT_ESC);"
|
||||
" Exit(,CH_ESC);"
|
||||
"}"
|
||||
"Help {"
|
||||
" Help(,,SC_F1);"
|
||||
"About {"
|
||||
" Info(,CH_CTRLI);"
|
||||
"}"
|
||||
);
|
||||
MenuPop;
|
||||
SettingsPop;
|
||||
DocClear;
|
||||
|
||||
CCtrl *c=SliderNew;
|
||||
|
||||
I64 arg1,arg2,ch=0,sc=0;
|
||||
I64 arg1,arg2,sc=0;
|
||||
I64 original_left, original_right, original_top, original_bottom;
|
||||
|
||||
original_left = c->win_task->win_left;
|
||||
original_right = c->win_task->win_right;
|
||||
original_top = c->win_task->win_top;
|
||||
original_bottom = c->win_task->win_bottom;
|
||||
// PopUp(c);
|
||||
|
||||
// windowed
|
||||
c->win_task->win_left = (GR_WIDTH/20);
|
||||
c->win_task->win_right = (GR_WIDTH/14);
|
||||
c->win_task->win_left = (GR_WIDTH/23);
|
||||
c->win_task->win_right = (GR_WIDTH/13);
|
||||
|
||||
// c->win_task->win_right = c->win_task->win_width - 85;
|
||||
c->win_task->win_top = 20;
|
||||
c->win_task->win_bottom = GR_HEIGHT/14;//c->win_task->win_height;
|
||||
c->win_task->win_top = GR_HEIGHT/80;
|
||||
c->win_task->win_bottom = GR_HEIGHT/10;//c->win_task->win_height;
|
||||
|
||||
|
||||
// init pos for 32bit redraw
|
||||
|
@ -362,46 +339,46 @@ public U0 PaletteEditor()
|
|||
|
||||
SelectColor(0,c);
|
||||
|
||||
try {
|
||||
while(TRUE) {
|
||||
switch(MessageScan(&arg1,&arg2,1<<MESSAGE_KEY_DOWN|1<<MESSAGE_KEY_UP)) {
|
||||
case MESSAGE_KEY_DOWN:
|
||||
ch=arg1;
|
||||
switch(ch){
|
||||
case '1': SelectColor(0,c); break;
|
||||
case '2': SelectColor(1,c); break;
|
||||
case '3': SelectColor(2,c); break;
|
||||
case '4': SelectColor(3,c); break;
|
||||
case '5': SelectColor(4,c); break;
|
||||
case '6': SelectColor(5,c); break;
|
||||
case '7': SelectColor(6,c); break;
|
||||
case '8': SelectColor(7,c); break;
|
||||
case '9': SelectColor(8,c); break;
|
||||
case '0': SelectColor(9,c); break;
|
||||
case '-': SelectColor(10,c);break;
|
||||
case '=': SelectColor(11,c);break;
|
||||
case 'q': SelectColor(12,c);break;
|
||||
case 'w': SelectColor(13,c);break;
|
||||
case 'e': SelectColor(14,c);break;
|
||||
case 'r': SelectColor(15,c);break;
|
||||
//case 's': PalettePrint; break;
|
||||
case CH_CTRLO: PELoad(TRUE);break;
|
||||
case CH_CTRLA: PESave(TRUE,c);break;
|
||||
//case CH_CTRLT: LFBFlush; break;
|
||||
case CH_ESC: // should make it keep palette on ESC and discard on SHIFT_ESC
|
||||
case CH_SHIFT_ESC:
|
||||
LFBFlush;
|
||||
DocClear;
|
||||
throw;
|
||||
}
|
||||
break;
|
||||
}
|
||||
try
|
||||
{
|
||||
while(TRUE)
|
||||
{
|
||||
switch(KeyGet(&sc))
|
||||
{
|
||||
case '1': SelectColor(0,c); break;
|
||||
case '2': SelectColor(1,c); break;
|
||||
case '3': SelectColor(2,c); break;
|
||||
case '4': SelectColor(3,c); break;
|
||||
case '5': SelectColor(4,c); break;
|
||||
case '6': SelectColor(5,c); break;
|
||||
case '7': SelectColor(6,c); break;
|
||||
case '8': SelectColor(7,c); break;
|
||||
case '9': SelectColor(8,c); break;
|
||||
case '0': SelectColor(9,c); break;
|
||||
case '-': SelectColor(10,c);break;
|
||||
case '=': SelectColor(11,c);break;
|
||||
case 'q': SelectColor(12,c);break;
|
||||
case 'w': SelectColor(13,c);break;
|
||||
case 'e': SelectColor(14,c);break;
|
||||
case 'r': SelectColor(15,c);break;
|
||||
case CH_CTRLO: current_palette = PaletteSelect; break;
|
||||
case CH_CTRLI: PopUpOk("Made by y4my4m"); break;$ID,2$
|
||||
case CH_CTRLA: PESave(TRUE,c);break;
|
||||
case CH_ESC: // should make it keep palette on ESC and discard on SHIFT_ESC
|
||||
case CH_SHIFT_ESC:
|
||||
LFBFlush;
|
||||
DocClear;
|
||||
throw;
|
||||
}
|
||||
Refresh;
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
PutExcept;
|
||||
|
||||
MenuPop;
|
||||
SettingsPop;
|
||||
|
||||
SliderDel(c);
|
||||
DocBottom;
|
||||
|
@ -412,6 +389,4 @@ public U0 PaletteEditor()
|
|||
c->win_task->win_top = original_top;
|
||||
c->win_task->win_bottom = original_bottom;
|
||||
|
||||
}
|
||||
|
||||
//PaletteEditor;
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
|
||||
|
||||
public U0 PaletteSelect()
|
||||
public I64 PaletteSelect()
|
||||
{
|
||||
CDirEntry *tmpde1 = NULL, *tmpde2;
|
||||
|
||||
|
@ -35,7 +34,9 @@ public U0 PaletteSelect()
|
|||
DocDel(doc);
|
||||
|
||||
if (res != (DOCM_CANCEL || 0)) PaletteSet(res, TRUE);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
PaletteSelect;
|
||||
//PaletteSelect;
|
Loading…
Reference in a new issue