From 030d9ca5b694c86227ac8098f29dff46d9a2a344 Mon Sep 17 00:00:00 2001
From: y4my4my4m <8145020+y4my4my4m@users.noreply.github.com>
Date: Thu, 11 Nov 2021 03:48:58 -0500
Subject: [PATCH] Integrated PaletteSelect to PaletteEditor

---
 src/Home/PaletteEditor/Load.CC                | 223 ++++++++----------
 src/Home/{ => PaletteEditor}/PaletteSelect.CC |   7 +-
 2 files changed, 103 insertions(+), 127 deletions(-)
 rename src/Home/{ => PaletteEditor}/PaletteSelect.CC (90%)

diff --git a/src/Home/PaletteEditor/Load.CC b/src/Home/PaletteEditor/Load.CC
index 7abe9b96..6b2d3398 100755
--- a/src/Home/PaletteEditor/Load.CC
+++ b/src/Home/PaletteEditor/Load.CC
@@ -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;
+}
\ No newline at end of file
diff --git a/src/Home/PaletteSelect.CC b/src/Home/PaletteEditor/PaletteSelect.CC
similarity index 90%
rename from src/Home/PaletteSelect.CC
rename to src/Home/PaletteEditor/PaletteSelect.CC
index af5f692a..772703ac 100755
--- a/src/Home/PaletteSelect.CC
+++ b/src/Home/PaletteEditor/PaletteSelect.CC
@@ -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;
\ No newline at end of file
+//PaletteSelect;
\ No newline at end of file