From fc69a0e4c31059f700c958c4b84219256fe525c2 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Mon, 30 Dec 2024 04:14:07 +0000 Subject: [PATCH] progress with setting rgb (add functions to set in app type) --- dotscape | Bin 1182472 -> 1182472 bytes functional-core/app/app-init.sml | 1 + functional-core/app/app-type.sml | 2 + functional-core/app/app-with.sml | 246 +++++++++++++++++++++++++++++++ message-types/input-msg.sml | 2 + 5 files changed, 251 insertions(+) diff --git a/dotscape b/dotscape index 711e429e62dfdfa82276947b527c4bc6c4f675a4..336a45e23a07dcbb0b94975e6192408628092c98 100755 GIT binary patch delta 45248 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 Yg3^>J$uwJ(pMGEdgIeSQ%eSxo4~D4dIRF3v delta 45403 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 AppType.app_type + + val num: AppType.app_type * int -> AppType.app_type + val r: AppType.app_type -> AppType.app_type + val g: AppType.app_type -> AppType.app_type + val b: AppType.app_type -> AppType.app_type end structure AppWith :> APP_WITH = @@ -93,6 +98,7 @@ struct , r , g , b + , num } = app val newUndo = newUndoHd :: undo @@ -118,6 +124,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -147,6 +154,7 @@ struct , r , g , b + , num } = app val newTriangle = @@ -184,6 +192,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -211,6 +220,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -234,6 +244,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -261,6 +272,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -284,6 +296,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -313,6 +326,7 @@ struct , r , g , b + , num } = app val xClickPoints = ClickPoints.generate (wStart, wFinish, numClickPoints) @@ -339,6 +353,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -389,6 +404,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -412,6 +428,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -440,6 +457,7 @@ struct , r , g , b + , num } = app val newUndo = @@ -470,6 +488,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -498,6 +517,7 @@ struct , r , g , b + , num } = app val newUndo = newUndoHd :: undo @@ -527,6 +547,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -554,6 +575,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -577,6 +599,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -604,6 +627,7 @@ struct , r , g , b + , num } = app in { mode = newMode @@ -627,6 +651,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -654,6 +679,7 @@ struct , r , g , b + , num } = app val triangleStage = NO_TRIANGLE @@ -679,6 +705,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -706,6 +733,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -729,6 +757,7 @@ struct , r = r , g = g , b = b + , num = num } end @@ -756,6 +785,7 @@ struct , r , g , b + , num } = app in { mode = mode @@ -779,6 +809,222 @@ struct , r = r , g = g , b = b + , num = num + } + end + + fun num (app: app_type, newNum): app_type = + let + val + { triangleStage + , mode + , triangles + , numClickPoints + , xClickPoints + , yClickPoints + , windowWidth + , windowHeight + , undo + , redo + , showGraph + , mouseX + , mouseY + , arrowX + , arrowY + , openFilePath + , fileBrowser + , fileBrowserIdx + , r + , g + , b + , num = _ + } = app + + in + { triangleStage = triangleStage + , undo = undo + , redo = [] + , mode = mode + , triangles = triangles + , numClickPoints = numClickPoints + , xClickPoints = xClickPoints + , yClickPoints = yClickPoints + , windowWidth = windowWidth + , windowHeight = windowHeight + , showGraph = showGraph + , mouseX = mouseX + , mouseY = mouseY + , arrowX = arrowX + , arrowY = arrowY + , openFilePath = openFilePath + , fileBrowser = fileBrowser + , fileBrowserIdx = fileBrowserIdx + , r = r + , g = g + , b = b + , num = newNum + } + end + + fun r (app: app_type): app_type = + let + val + { triangleStage + , mode + , triangles + , numClickPoints + , xClickPoints + , yClickPoints + , windowWidth + , windowHeight + , undo + , redo + , showGraph + , mouseX + , mouseY + , arrowX + , arrowY + , openFilePath + , fileBrowser + , fileBrowserIdx + , r = _ + , g + , b + , num + } = app + + val newR = Real32.fromInt num / 255.0 + in + { triangleStage = triangleStage + , undo = undo + , redo = [] + , mode = mode + , triangles = triangles + , numClickPoints = numClickPoints + , xClickPoints = xClickPoints + , yClickPoints = yClickPoints + , windowWidth = windowWidth + , windowHeight = windowHeight + , showGraph = showGraph + , mouseX = mouseX + , mouseY = mouseY + , arrowX = arrowX + , arrowY = arrowY + , openFilePath = openFilePath + , fileBrowser = fileBrowser + , fileBrowserIdx = fileBrowserIdx + , r = newR + , g = g + , b = b + , num = 0 + } + end + + fun g (app: app_type): app_type = + let + val + { triangleStage + , mode + , triangles + , numClickPoints + , xClickPoints + , yClickPoints + , windowWidth + , windowHeight + , undo + , redo + , showGraph + , mouseX + , mouseY + , arrowX + , arrowY + , openFilePath + , fileBrowser + , fileBrowserIdx + , r + , g = _ + , b + , num + } = app + + val newG = Real32.fromInt num / 255.0 + in + { triangleStage = triangleStage + , undo = undo + , redo = [] + , mode = mode + , triangles = triangles + , numClickPoints = numClickPoints + , xClickPoints = xClickPoints + , yClickPoints = yClickPoints + , windowWidth = windowWidth + , windowHeight = windowHeight + , showGraph = showGraph + , mouseX = mouseX + , mouseY = mouseY + , arrowX = arrowX + , arrowY = arrowY + , openFilePath = openFilePath + , fileBrowser = fileBrowser + , fileBrowserIdx = fileBrowserIdx + , r = r + , g = newG + , b = b + , num = 0 + } + end + + fun b (app: app_type): app_type = + let + val + { triangleStage + , mode + , triangles + , numClickPoints + , xClickPoints + , yClickPoints + , windowWidth + , windowHeight + , undo + , redo + , showGraph + , mouseX + , mouseY + , arrowX + , arrowY + , openFilePath + , fileBrowser + , fileBrowserIdx + , r + , g + , b = _ + , num + } = app + + val newB = Real32.fromInt num / 255.0 + in + { triangleStage = triangleStage + , undo = undo + , redo = [] + , mode = mode + , triangles = triangles + , numClickPoints = numClickPoints + , xClickPoints = xClickPoints + , yClickPoints = yClickPoints + , windowWidth = windowWidth + , windowHeight = windowHeight + , showGraph = showGraph + , mouseX = mouseX + , mouseY = mouseY + , arrowX = arrowX + , arrowY = arrowY + , openFilePath = openFilePath + , fileBrowser = fileBrowser + , fileBrowserIdx = fileBrowserIdx + , r = r + , g = g + , b = newB + , num = 0 } end end diff --git a/message-types/input-msg.sml b/message-types/input-msg.sml index a872938..f6d15fb 100644 --- a/message-types/input-msg.sml +++ b/message-types/input-msg.sml @@ -15,6 +15,7 @@ sig | KEY_CTRL_L | KEY_CTRL_E | KEY_CTRL_O + | NUM of int | ARROW_UP | ARROW_LEFT | ARROW_RIGHT @@ -43,6 +44,7 @@ struct | KEY_CTRL_L | KEY_CTRL_E | KEY_CTRL_O + | NUM of int | ARROW_UP | ARROW_LEFT | ARROW_RIGHT