From f88a54968e4d16c20af4f3a4ff5cf182dbb2db2b Mon Sep 17 00:00:00 2001 From: Alexandre Date: Sun, 19 May 2024 12:37:54 +0200 Subject: [PATCH] Colors --- a.out | Bin 40972 -> 42069 bytes pretty_printing.cmi | Bin 1713 -> 1944 bytes pretty_printing.cmo | Bin 7881 -> 9572 bytes pretty_printing.ml | 76 ++++++++++++++++++++++++++++++++++---------- 4 files changed, 60 insertions(+), 16 deletions(-) diff --git a/a.out b/a.out index 754a1a74b845ede9018a8c47e343732c8b4dc757..5b20e334331d86693ac31019aa198215a682bae5 100755 GIT binary patch delta 2233 zcmcJQT}&KR6vy|%j?MxLJ1%71EU-|DY$aN00UL`1QV=LAtkpsVD$Rbl%f~KDw^)lG zZKCm|M(K&MZAj6i@uO;DL-ef?-!!QSeK4kpCX)D~sSi9Dt7z8$e_#+QL3wbJ-<@;M zy*u~(&p9)DdM@khFS0%^9CS3_X0wHCHe0TwLjKu?!Q$+q2QYPl!(b7_K)y5wD>QC& zi3+vJTU{=19cC?D1MBzVQI3o7_5)4Mg?gkn98hg?DqJls;X;)oi=iqx8P;Kyhb!d6 zaFcS#&tZ>rC+yPOn&(vbr4Ae*R~Ex=YeiZjwQ@6>Ck=63^J6t%rXqg1TCY1xG1EX9 z?{X#5Q*=0!$uMR&$O5$UDb!%RjEU`TMN%DHdF%jee1t5KhPAH7rNqGc*y7NVh& zT=?$*RLr{z6oWFL%R+mV_8CuxFfQhW8Q>n;N$?zCtc4%~xIPYI;90;m z`grk-1>h9)jn~>iMa&;#HG4=@(j&(sg~mV5l*@@ONssm#lWTIyNT><9Z`J=@mwHs* zAMtIVjH=j$jOBk;=CqWVXUa#34{B~z#2thcwyO6o?A3nYJ6t&pk5xr}>#Qo)!)DcZ z@0Num-lC-L2(EY@gQv=1&sh5zM~?iNn(Wx9)~w%FGQw|VuBenxPLAoD)cNzVjqB`0 zojo!)_PW=6m+`a!V4eR~Kh?Uq`UBWa^^dQrXD8Bg@IR_&PI%^4`(caf*Y!dkdcgADIlh zqZ;rU!knr&=hy4gC22fXTC?}}OeT(L3^V~=!@%-2o1SIg5bP$II_A+DVcA8Sm{fgo zYQnGjXWyQ9v((_}NAb6b45|ydO{Hf$-Z+$9hn6n0Rr>mN-#5y!#vFH<<8E`THOD%0 ztT)H|N9Cup+vKaW4)B^9m>oFRs0#Y#o6ZCdq{B}|j>prs{@F|CKe4-(0v*?W+4aq@ cm%1G-U0!WQk~4i-C*G5*Gk&#SZp@VZ1>g*eBme*a delta 1466 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 L3Tq+WsDtr8HPes- diff --git a/pretty_printing.cmo b/pretty_printing.cmo index 9314019a12efea69f0c64adcb80d9256e8c856ec..9cbef29de43f29c1113599fc1be2c5b50354ae8e 100644 GIT binary patch literal 9572 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 literal 7881 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 diff --git a/pretty_printing.ml b/pretty_printing.ml index 5b864ba..0175bd1 100644 --- a/pretty_printing.ml +++ b/pretty_printing.ml @@ -1,3 +1,5 @@ +(*open Spectrum*) + let rec print_mat m = for i = 0 to (Array.length m)-1 do print_char ' '; @@ -42,7 +44,7 @@ let is_rempaceable c arr = with | ReturnBool b -> b ;; -let draw_line_bresenham mat x1 y1 x2 y2 cutoff = +let draw_line_bresenham mat cls origin x1 y1 x2 y2 cutoff = let slope = ref 0. in let override_arr = [|' '; '.'; '|'; '-'|] in if x2 <> x1 || y2 <> y1 then @@ -55,8 +57,16 @@ let draw_line_bresenham mat x1 y1 x2 y2 cutoff = for k = x1 to x2 do let cur_y = ref ((!slope) *. float_of_int (k - x1) +. float_of_int y1) in if !slope = 0. then cur_y := float_of_int y2 else (); - if is_rempaceable mat.(k).(int_of_float (!cur_y)) override_arr then - if x2 - k > cutoff then mat.(k).(int_of_float (!cur_y)) <- '|' else mat.(k).(int_of_float (!cur_y)) <- 'v' + if is_rempaceable mat.(k).(int_of_float (!cur_y)) override_arr then begin + if x2 - k <= cutoff || k mod 2 = 0 || cls.(k).(int_of_float (!cur_y)) = 0 then + cls.(k).(int_of_float (!cur_y)) <- origin+1 + else + (); + if x2 - k > cutoff then + mat.(k).(int_of_float (!cur_y)) <- '|' + else + mat.(k).(int_of_float (!cur_y)) <- 'v' + end else () done @@ -64,8 +74,16 @@ let draw_line_bresenham mat x1 y1 x2 y2 cutoff = for k = x1 downto x2 do let cur_y = ref ((!slope) *. float_of_int (k - x1) +. float_of_int y1) in if !slope = 0. then cur_y := float_of_int y2 else (); - if is_rempaceable mat.(k).(int_of_float (!cur_y)) override_arr then - if k - x2 > cutoff then mat.(k).(int_of_float (!cur_y)) <- '|' else mat.(k).(int_of_float (!cur_y)) <- '^' + if is_rempaceable mat.(k).(int_of_float (!cur_y)) override_arr then begin + if k - x2 <= cutoff || k mod 2 = 0 || cls.(k).(int_of_float (!cur_y)) = 0 then + cls.(k).(int_of_float (!cur_y)) <- origin+1 + else + (); + if k - x2 > cutoff then + mat.(k).(int_of_float (!cur_y)) <- '|' + else + mat.(k).(int_of_float (!cur_y)) <- '^' + end else () done @@ -77,8 +95,16 @@ let draw_line_bresenham mat x1 y1 x2 y2 cutoff = cur_x := ((float_of_int l) +. ((!slope) *. (float_of_int x1) -. (float_of_int y1))) /. (!slope) else (); - if is_rempaceable mat.(int_of_float (!cur_x)).(l) override_arr then - if y2 - l > cutoff then mat.(int_of_float (!cur_x)).(l) <- '-' else mat.(int_of_float (!cur_x)).(l) <- '>' + if is_rempaceable mat.(int_of_float (!cur_x)).(l) override_arr then begin + if y2 - l <= cutoff || l mod 2 = 0 || cls.(int_of_float (!cur_x)).(l) = 0 then + cls.(int_of_float (!cur_x)).(l) <- origin+1 + else + (); + if y2 - l > cutoff then + mat.(int_of_float (!cur_x)).(l) <- '-' + else + mat.(int_of_float (!cur_x)).(l) <- '>' + end else () done @@ -89,15 +115,25 @@ let draw_line_bresenham mat x1 y1 x2 y2 cutoff = cur_x := ((float_of_int l) +. ((!slope) *. (float_of_int x1) -. (float_of_int y1))) /. (!slope) else (); - if is_rempaceable mat.(int_of_float (!cur_x)).(l) override_arr then - if l - y2 > cutoff then mat.(int_of_float (!cur_x)).(l) <- '-' else mat.(int_of_float (!cur_x)).(l) <- '<' + if is_rempaceable mat.(int_of_float (!cur_x)).(l) override_arr then begin + if l - y2 <= cutoff || l mod 2 = 0 || cls.(int_of_float (!cur_x)).(l) = 0 then + cls.(int_of_float (!cur_x)).(l) <- origin+1 + else + (); + if l - y2 > cutoff then + mat.(int_of_float (!cur_x)).(l) <- '-' + else + mat.(int_of_float (!cur_x)).(l) <- '<' + end else () done;; -let display mat = +let display mat cls = + let colors = [|"\027[30m"; "\027[31m"; "\027[32m"; "\027[33m"; "\027[34m"; "\027[35m"; "\027[36m"; "\027[37m"|] in for i = 0 to (Array.length mat -1) do for j = 0 to (Array.length mat.(i) -1) do + print_string colors.(cls.(i).(j) mod (Array.length colors)); if mat.(i).(j) = '&' then print_char ' ' else @@ -106,18 +142,20 @@ let display mat = print_char '\n' done;; -let extend mat i0 j0 dst = +let extend mat cls i0 j0 dst = let ni = Array.length mat in let nj = Array.length mat.(0) in for i = -dst to dst do for j = -dst to dst do - if i0 - i >= 0 && j0 - j >= 0 && i0 - i < ni && j0 - j < nj then + if i0 - i >= 0 && j0 - j >= 0 && i0 - i < ni && j0 - j < nj then begin + cls.(i0-i).(j0-j) <- Char.code mat.(i0).(j0) - 48 + 1; if abs i = dst || abs j = dst then mat.(i0-i).(j0-j) <- '*' else if i <> 0 || j <> 0 then mat.(i0-i).(j0-j) <- '&' else () + end else () done @@ -130,6 +168,12 @@ let extremely_fancy_graph_printing g size = px.(i) <- Array.make (3*size) ' ' done; + (* color matrix *) + let cls = Array.make (size) [||] in + for i = 0 to (size-1) do + cls.(i) <- Array.make (3*size) 0 + done; + let coords = Array.make size (0, 0) in (* placing the points on the trig circle *) @@ -142,22 +186,22 @@ let extremely_fancy_graph_printing g size = if !i >= size then i := size-1 else (); if !j >= size then j := size-1 else (); px.(!i).(3* !j) <- Char.chr (k + 48); - extend px !i (3* !j) 3; + extend px cls !i (3* !j) 3; coords.(k) <- (!i, 3* !j); done; (* draw the connections *) for i = 0 to Array.length g -1 do for j = 0 to Array.length g.(i) -1 do - draw_line_bresenham px (fst coords.(i)) (snd coords.(i)) (fst coords.(g.(i).(j))) (snd coords.(g.(i).(j))) 7 + draw_line_bresenham px cls i (fst coords.(i)) (snd coords.(i)) (fst coords.(g.(i).(j))) (snd coords.(g.(i).(j))) 7 done done; (* show the image *) - display px ;; + display px cls ;; -let gr = [|[|3; 4|]; [|0; 6; 7|]; [|3; 5|]; [|0; 7|]; [|1; 2|]; [|4|]; [|5; 7|]; [|5|]|] ;; +let gr = [|[|1; 2|]; [|2; 3|]; [|0; 1; 3|]; [|0; 1|]|] ;; (*print_mat gr ;;*)