summaryrefslogtreecommitdiff
path: root/src/displayapp/icons/navigation/img_conv_core.php
diff options
context:
space:
mode:
authorJoaquim <joaquim.org@gmail.com>2021-04-04 02:08:51 (GMT)
committerJoaquim <joaquim.org@gmail.com>2021-04-04 02:08:51 (GMT)
commit1d3742e14f09316a1d795527713eb8f9742f0ffb (patch)
tree6bc6343538506b68256aa057121e063d22f8ed1a /src/displayapp/icons/navigation/img_conv_core.php
parent58a2d000c4d49d96121894d6dd6bb861d7564bea (diff)
Big UI and navigation Rewrite
new navigation add some color to the apps redesign menus new settings menu new quick settings code clean up size reduction by converting navigation images to font and more...
Diffstat (limited to 'src/displayapp/icons/navigation/img_conv_core.php')
-rw-r--r--src/displayapp/icons/navigation/img_conv_core.php822
1 files changed, 0 insertions, 822 deletions
diff --git a/src/displayapp/icons/navigation/img_conv_core.php b/src/displayapp/icons/navigation/img_conv_core.php
deleted file mode 100644
index f12b76e..0000000
--- a/src/displayapp/icons/navigation/img_conv_core.php
+++ /dev/null
@@ -1,822 +0,0 @@
-<?php
-
-class Converter {
- var $dith; /*Dithering enable/disable*/
- var $w; /*Image width*/
- var $h; /*Image height*/
- var $cf; /*Color format*/
- var $alpha; /*Add alpha byte or not*/
- var $chroma; /*Chroma keyed?*/
- var $d_out; /*Output data (result)*/
- var $img; /*Image resource*/
- var $out_name; /*Name of the output file*/
- var $path; /*Path to the image file*/
-
- /*Helper variables*/
- var $r_act;
- var $b_act;
- var $g_act;
-
- /*For dithering*/
- var $r_earr; /*Classification error for next row of pixels*/
- var $g_earr;
- var $b_earr;
-
- var $r_nerr; /*Classification error for next pixel*/
- var $g_err;
- var $b_nerr;
-
- const CF_TRUE_COLOR_332 = 0; /*Helper formats. Used internally*/
- const CF_TRUE_COLOR_565 = 1;
- const CF_TRUE_COLOR_565_SWAP = 2;
- const CF_TRUE_COLOR_888 = 3;
- const CF_ALPHA_1_BIT = 4;
- const CF_ALPHA_2_BIT = 5;
- const CF_ALPHA_4_BIT = 6;
- const CF_ALPHA_8_BIT = 7;
- const CF_INDEXED_1_BIT = 8;
- const CF_INDEXED_2_BIT = 9;
- const CF_INDEXED_4_BIT = 10;
- const CF_INDEXED_8_BIT = 11;
- const CF_RAW = 12;
- const CF_RAW_ALPHA = 13;
- const CF_RAW_CHROMA = 12;
-
- const CF_TRUE_COLOR = 100; /*Helper formats is C arrays contains all treu color formats (usin in "download")*/
- const CF_TRUE_COLOR_ALPHA = 101;
- const CF_TRUE_COLOR_CHROMA = 102;
-
- /**
- * @param path the image file
- * @param real_name the real image file name (different in online mode)
- * @param out_name name of the output file
- * @param dith 1: dither enabled; 0: disabled
- * @param cf color format
- */
- function __construct ($path, $real_name, $out_name ,$dith, $cf) {
-
- $this->dith = $dith;
- $this->out_name = $out_name;
- $this->path = $path;
-
- if($cf == "raw" || $cf == "raw_alpha" || $cf == "raw_chroma") return;
-
- $size = getimagesize($path);
- $this->w = $size[0];
- $this->h = $size[1];
-
- $ext = pathinfo($real_name, PATHINFO_EXTENSION);
- if(!strcmp(strtolower($ext), "png")) $this->img = imagecreatefrompng($path);
- else if(!strcmp(strtolower($ext), "bmp")) $this->img = imagecreatefrombmp($path);
- else if(!strcmp(strtolower($ext), "jpg")) $this->img = imagecreatefromjpeg($path);
- else if(!strcmp(strtolower($ext), "jpeg")) $this->img = imagecreatefromjpeg($path);
- else {
- echo("$ext is a not supported image type. use png, jpg, jpeg or bmp");
- exit(1);
- }
-
- $this->r_earr = array(); /*Classification error for next row of pixels*/
- $this->g_earr = array();
- $this->b_earr = array();
-
- if($this->dith) {
- for($i = 0; $i < $this->w + 2; ++$i){
- $this->r_earr[$i] = 0;
- $this->g_earr[$i] = 0;
- $this->b_earr[$i] = 0;
- }
- }
-
- $this->r_nerr = 0; /*Classification error for next pixel*/
- $this->g_nerr = 0;
- $this->b_nerr = 0;
- }
-
- function convert($cf, $alpha = 0) {
- $this->cf = $cf;
- $this->d_out = array();
- $this->alpha = $alpha;
-
- if($this->cf == self::CF_RAW || $this->cf == self::CF_RAW_ALPHA || $this->cf == self::CF_RAW_CHROMA) {
- $myfile = fopen($this->path, "r") or die("Unable to open file!");
- $this->d_out = unpack('C*', fread($myfile, filesize($this->path)));
- fclose($myfile);
- return;
- }
-
- $palette_size = 0;
- if($this->cf == self::CF_INDEXED_1_BIT) $palette_size = 2;
- if($this->cf == self::CF_INDEXED_2_BIT) $palette_size = 4;
- if($this->cf == self::CF_INDEXED_4_BIT) $palette_size = 16;
- if($this->cf == self::CF_INDEXED_8_BIT) $palette_size = 256;
-
- if($palette_size) {
- $img_tmp = imagecreatetruecolor($this->w, $this->h);
- imagecopy ($img_tmp, $this->img, 0 , 0 , 0 , 0, $this->w , $this->h);
- imagetruecolortopalette($this->img, false, $palette_size);
- $real_palette_size = imagecolorstotal($this->img); /*The real number of colos in the image's palette*/
- for($i = 0; $i < $palette_size; $i++) {
- if($i < $real_palette_size) {
- $c = imagecolorsforindex ($this->img , $i);
- array_push($this->d_out, $c['blue'], $c['green'], $c['red'], 0xFF);
- } else {
- array_push($this->d_out, 0xFF, 0xFF, 0xFF, 0xFF);
- }
- }
- }
-
- /*Convert all the pixels*/
- for($y = 0; $y < $this->h; $y++) {
- $this->dith_reset();
-
- for($x = 0; $x < $this->w; ++$x){
- $this->conv_px($x, $y);
- }
- }
-
- /*Revert the original image if it was converted to indexed*/
- if($palette_size) {
- imagecopy ($this->img, $img_tmp, 0 , 0 , 0 , 0 , $this->w , $this->h);
- }
- }
-
- function format_to_c_array() {
-
- $c_array = "";
- $i = 0;
- $y_end = $this->h;
- $x_end = $this->w;
-
- if($this->cf == self::CF_TRUE_COLOR_332) {
- $c_array .= "\n#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8";
- if(!$this->alpha) $c_array .= "\n /*Pixel format: Blue: 2 bit, Green: 3 bit, Red: 3 bit*/";
- else $c_array .= "\n /*Pixel format: Blue: 2 bit, Green: 3 bit, Red: 3 bit, Alpha 8 bit */";
- } else if($this->cf == self::CF_TRUE_COLOR_565) {
- $c_array .= "\n#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0";
- if(!$this->alpha) $c_array .= "\n /*Pixel format: Blue: 5 bit, Green: 6 bit, Red: 5 bit*/";
- else $c_array .= "\n /*Pixel format: Blue: 5 bit, Green: 6 bit, Red: 5 bit, Alpha 8 bit*/";
- } else if($this->cf == self::CF_TRUE_COLOR_565_SWAP) {
- $c_array .= "\n#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0";
- if(!$this->alpha) $c_array .= "\n /*Pixel format: Blue: 5 bit, Green: 6 bit, Red: 5 bit BUT the 2 bytes are swapped*/";
- else $c_array .= "\n /*Pixel format: Blue: 5 bit Green: 6 bit, Red: 5 bit, Alpha 8 bit BUT the 2 color bytes are swapped*/";
- } else if($this->cf == self::CF_TRUE_COLOR_888) {
- $c_array .= "\n#if LV_COLOR_DEPTH == 32";
- if(!$this->alpha) $c_array .= "\n /*Pixel format: Blue: 8 bit, Green: 8 bit, Red: 8 bit, Fix 0xFF: 8 bit, */";
- else $c_array .= "\n /*Pixel format: Blue: 8 bit, Green: 8 bit, Red: 8 bit, Alpha: 8 bit*/";
- } else if($this->cf == self::CF_INDEXED_1_BIT) {
- $c_array .= "\n";
- for($p = 0; $p < 2; $p ++) {
- $c_array .= " 0x" . str_pad(dechex($this->d_out[$p * 4 + 0]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 1]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 2]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 3]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "\t/*Color of index $p*/\n";
- }
-
- $i = $p * 4;
- }
- else if($this->cf == self::CF_INDEXED_2_BIT) {
- $c_array .= "\n";
- for($p = 0; $p < 4; $p ++) {
- $c_array .= " 0x" . str_pad(dechex($this->d_out[$p * 4 + 0]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 1]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 2]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 3]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "\t/*Color of index $p*/\n";
- }
-
- $i = $p * 4;
- }
- else if($this->cf == self::CF_INDEXED_4_BIT) {
- $c_array .= "\n";
- for($p = 0; $p < 16; $p ++) {
- $c_array .= " 0x" . str_pad(dechex($this->d_out[$p * 4 + 0]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 1]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 2]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 3]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "\t/*Color of index $p*/\n";
- }
-
- $i = $p * 4;
- }
- else if($this->cf == self::CF_INDEXED_8_BIT) {
- $c_array .= "\n";
- for($p = 0; $p < 256; $p ++) {
- $c_array .= " 0x" . str_pad(dechex($this->d_out[$p * 4 + 0]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 1]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 2]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "0x" . str_pad(dechex($this->d_out[$p * 4 + 3]), 2, '0', STR_PAD_LEFT) . ", ";
- $c_array .= "\t/*Color of index $p*/\n";
- }
-
- $i = $p * 4;
- }
- else if($this->cf == self::CF_RAW || $this->cf == self::CF_RAW_ALPHA || $this->cf == self::CF_RAW_CHROMA) {
- $y_end = 1;
- $x_end = count($this->d_out);
- $i = 1;
- }
-
-
- for($y = 0; $y < $y_end; $y++) {
- $c_array .= "\n ";
- for($x = 0; $x < $x_end; $x++) {
- if($this->cf == self::CF_TRUE_COLOR_332) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- if($this->alpha) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- }
- else if($this->cf == self::CF_TRUE_COLOR_565 || $this->cf == self::CF_TRUE_COLOR_565_SWAP) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- if($this->alpha) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- }
- else if($this->cf == self::CF_TRUE_COLOR_888) {
-
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", "; $i++;
- }
- else if($this->cf == self::CF_ALPHA_1_BIT || $this->cf == self::CF_INDEXED_1_BIT) {
- if(($x & 0x7) == 0) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- }
- else if($this->cf == self::CF_ALPHA_2_BIT || $this->cf == self::CF_INDEXED_2_BIT) {
- if(($x & 0x3) == 0) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- }
- else if($this->cf == self::CF_ALPHA_4_BIT || $this->cf == self::CF_INDEXED_4_BIT) {
- if(($x & 0x1) == 0) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- }
- else if($this->cf == self::CF_ALPHA_8_BIT || $this->cf == self::CF_INDEXED_8_BIT) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- $i++;
- }
- else if($this->cf == self::CF_RAW || $this->cf == self::CF_RAW_ALPHA || $this->cf == self::CF_RAW_CHROMA) {
- $c_array .= "0x" . str_pad(dechex($this->d_out[$i]), 2, '0', STR_PAD_LEFT) . ", ";
- if($i != 0 && (($i % 16) == 0)) $c_array .= "\n ";
- $i++;
- }
- }
- }
-
- if($this->cf == self::CF_TRUE_COLOR_332 || $this->cf == self::CF_TRUE_COLOR_565 || $this->cf == self::CF_TRUE_COLOR_565_SWAP || $this->cf == self::CF_TRUE_COLOR_888) {
- $c_array .= "\n#endif";
- }
-
- return $c_array;
-
- }
-
- function get_c_header() {
- $c_header ="#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
-#include \"lvgl.h\"
-#else
-#include \"../lvgl/lvgl.h\"
-#endif
-
-
-#ifndef LV_ATTRIBUTE_MEM_ALIGN
-#define LV_ATTRIBUTE_MEM_ALIGN
-#endif
-
-";
- $attr_name = "LV_ATTRIBUTE_IMG_" . strtoupper($this->out_name);
- $c_header .=
-"#ifndef $attr_name
-#define $attr_name
-#endif
-
-const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST $attr_name uint8_t " . $this->out_name . "_map[] = {";
-
- return $c_header;
- }
-
- function get_c_footer($cf) {
- $c_footer =
- "\n};\n
-const lv_img_dsc_t " . $this->out_name . " = {
- .header.always_zero = 0,
- .header.w = " . $this->w . ",
- .header.h = " . $this->h . ",\n";
-
- if($cf == self::CF_TRUE_COLOR) $c_footer .= " .data_size = " . $this->w * $this->h . " * LV_COLOR_SIZE / 8,\n .header.cf = LV_IMG_CF_TRUE_COLOR,";
- else if($cf == self::CF_TRUE_COLOR_ALPHA) $c_footer .= " .data_size = " . $this->w * $this->h . " * LV_IMG_PX_SIZE_ALPHA_BYTE,\n .header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,";
- else if($cf == self::CF_TRUE_COLOR_CHROMA) $c_footer .= " .data_size = " . $this->w * $this->h . " * LV_COLOR_SIZE / 8,\n .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED,";
- else if($cf == self::CF_ALPHA_1_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_ALPHA_1BIT,";
- else if($cf == self::CF_ALPHA_2_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_ALPHA_2BIT,";
- else if($cf == self::CF_ALPHA_4_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_ALPHA_4BIT,";
- else if($cf == self::CF_ALPHA_8_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_ALPHA_8BIT,";
- else if($cf == self::CF_INDEXED_1_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_INDEXED_1BIT,";
- else if($cf == self::CF_INDEXED_2_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_INDEXED_2BIT,";
- else if($cf == self::CF_INDEXED_4_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_INDEXED_4BIT,";
- else if($cf == self::CF_INDEXED_8_BIT) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_INDEXED_8BIT,";
- else if($cf == self::CF_RAW) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_RAW,";
- else if($cf == self::CF_RAW_ALPHA) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_RAW_ALPHA,";
- else if($cf == self::CF_RAW_CHROMA) $c_footer .= " .data_size = " . count($this->d_out) . ",\n .header.cf = LV_IMG_CF_RAW_CHROMA_KEYED,";
-
- $c_footer .= "\n .data = " . $this->out_name . "_map,
-};\n";
-
- return $c_footer;
- }
-
- function download_c($name, $cf = -1, $content = ""){
- global $offline;
-
- if(strlen($content) < 1) {
- $content = $this->format_to_c_array();
- }
-
- if($cf < 0) $cf = $this->cf;
-
- $out = $this->get_c_header() . $content . "" . $this->get_c_footer($cf);
- $name = $name . ".c";
-
- if($offline){
- $file = fopen($name, "w");
- fwrite($file, $out);
- fclose($file);
- }
- else{
- header('Content-Type: application/text');
- header('Content-disposition: attachment; filename='.$name);
- header('Content-Length: ' . strlen($out));
-
- echo($out);
-
- }
- }
-
-
- function download_bin($name, $cf = -1, $content = 0){
- global $offline;
-
- if($content == 0) {
- $content = $this->d_out;
- }
-
- if($cf < 0) $cf = $this->cf;
- $name .= ".bin";
-
- $lv_cf = 4; /*Color format in LittlevGL*/
- switch($cf) {
- case self::CF_TRUE_COLOR:
- $lv_cf = 4; break;
- case self::CF_TRUE_COLOR_ALPHA:
- $lv_cf = 5; break;
- case self::CF_TRUE_COLOR_CHROMA:
- $lv_cf = 6; break;
- case self::CF_INDEXED_1_BIT:
- $lv_cf = 7; break;
- case self::CF_INDEXED_2_BIT:
- $lv_cf = 8; break;
- case self::CF_INDEXED_4_BIT:
- $lv_cf = 9; break;
- case self::CF_INDEXED_8_BIT:
- $lv_cf = 10; break;
- case self::CF_ALPHA_1_BIT:
- $lv_cf = 11; break;
- case self::CF_ALPHA_2_BIT:
- $lv_cf = 12; break;
- case self::CF_ALPHA_4_BIT:
- $lv_cf = 13; break;
- case self::CF_ALPHA_8_BIT:
- $lv_cf = 14; break;
- }
-
-
- $header = $lv_cf + ($this->w << 10) + ($this->h << 21);
- $header_bin = pack("V", $header);
-
- $content = pack("C*", ...$content);
-
- if($offline){
- $file = fopen($name, "w");
- fwrite($file, $header_bin);
- fwrite($file, $content);
- fclose($file);
- }
- else{
- $len = strlen($content) + 4;
- header('Content-Type: application/text');
- header('Content-disposition: attachment; filename='.$name);
- header('Content-Length:' . $len);
- echo($header_bin[0]);
- echo($header_bin[1]);
- echo($header_bin[2]);
- echo($header_bin[3]);
- echo($content);
-
-
- }
- }
-
- private function conv_px($x, $y) {
- $c = imagecolorat($this->img, $x, $y);
- if($this->alpha){
- $a = ($c & 0xff000000) >> 23; /*Alpha is 7 bit*/
- if($a & 0x02) $a |= 0x01; /*Repeate the last bit: 0000000 -> 00000000; 1111110 -> 11111111*/
- $a = 255 - $a;
- } else {
- $a = 0xff;
- }
- $r = ($c & 0x00ff0000) >> 16;
- $g = ($c & 0x0000ff00) >> 8;
- $b = ($c & 0x000000ff) >> 0;
-
- $this->dith_next($r, $g, $b, $x);
-
- if($this->cf == self::CF_TRUE_COLOR_332) {
- $c8 = ($this->r_act) | ($this->g_act >> 3) | ($this->b_act >> 6); //RGB332
- array_push($this->d_out, $c8);
- if($this->alpha) array_push($this->d_out, $a);
- } else if($this->cf == self::CF_TRUE_COLOR_565) {
- $c16 = (($this->r_act) << 8) | (($this->g_act) << 3) | (($this->b_act) >> 3); //RGR565
- array_push($this->d_out, $c16 & 0xFF);
- array_push($this->d_out, ($c16 >> 8) & 0xFF);
- if($this->alpha) array_push($this->d_out, $a);
- } else if($this->cf == self::CF_TRUE_COLOR_565_SWAP) {
- $c16 = (($this->r_act) << 8) | (($this->g_act) << 3) | (($this->b_act) >> 3); //RGR565
- array_push($this->d_out, ($c16 >> 8) & 0xFF);
- array_push($this->d_out, $c16 & 0xFF);
- if($this->alpha) array_push($this->d_out, $a);
- } else if($this->cf == self::CF_TRUE_COLOR_888) {
- array_push($this->d_out, $this->b_act);
- array_push($this->d_out, $this->g_act);
- array_push($this->d_out, $this->r_act);
- array_push($this->d_out, $a);
- } else if($this->cf == self::CF_ALPHA_1_BIT) {
- $w = $this->w >> 3;
- if($this->w & 0x07) $w++;
- $p = $w * $y + ($x >> 3);
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- if($a > 0x80) {
- $this->d_out[$p] |= 1 << (7 - ($x & 0x7));
- }
- }
- else if($this->cf == self::CF_ALPHA_2_BIT) {
- $w = $this->w >> 2;
- if($this->w & 0x03) $w++;
-
- $p = $w * $y + ($x >> 2);
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- $this->d_out[$p] |= ($a >> 6) << (6 - (($x & 0x3) * 2));
- }
- else if($this->cf == self::CF_ALPHA_4_BIT) {
- $w = $this->w >> 1;
- if($this->w & 0x01) $w++;
-
- $p = $w * $y + ($x >> 1);
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- $this->d_out[$p] |= ($a >> 4) << (4 - (($x & 0x1) * 4));
- }
- else if($this->cf == self::CF_ALPHA_8_BIT) {
- $p = $this->w * $y + $x;
- $this->d_out[$p] = $a;
- }
- else if($this->cf == self::CF_INDEXED_1_BIT) {
- $w = $this->w >> 3;
- if($this->w & 0x07) $w++;
-
- $p = $w * $y + ($x >> 3) + 8; /* +8 for the palette*/
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- $this->d_out[$p] |= ($c & 0x1) << (7 - ($x & 0x7));
- }
- else if($this->cf == self::CF_INDEXED_2_BIT) {
- $w = $this->w >> 2;
- if($this->w & 0x03) $w++;
-
- $p = $w * $y + ($x >> 2) + 16; /* +16 for the palette*/
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- $this->d_out[$p] |= ($c & 0x3) << (6 - (($x & 0x3) * 2));
- }
- else if($this->cf == self::CF_INDEXED_4_BIT) {
- $w = $this->w >> 1;
- if($this->w & 0x01) $w++;
-
- $p = $w * $y + ($x >> 1) + 64; /* +64 for the palette*/
- if(!isset($this->d_out[$p])) $this->d_out[$p] = 0; /*Clear the bits first*/
- $this->d_out[$p] |= ($c & 0xF) << (4 - (($x & 0x1) * 4));
- }
- else if($this->cf == self::CF_INDEXED_8_BIT) {
- $p = $this->w * $y + $x + 1024; /* +1024 for the palette*/
- $this->d_out[$p] = $c & 0xFF;
- }
- }
-
- private function dith_reset() {
- if($this->dith){
- $this->r_nerr = 0;
- $this->g_nerr = 0;
- $this->b_nerr = 0;
- }
- }
-
- private function dith_next($r, $g, $b, $x) {
-
- if($this->dith){
- $this->r_act = $r + $this->r_nerr + $this->r_earr[$x+1];
- $this->r_earr[$x+1] = 0;
-
- $this->g_act = $g + $this->g_nerr + $this->g_earr[$x+1];
- $this->g_earr[$x+1] = 0;
-
- $this->b_act = $b + $this->b_nerr + $this->b_earr[$x+1];
- $this->b_earr[$x+1] = 0;
-
- if($this->cf == self::CF_TRUE_COLOR_332) {
- $this->r_act = $this->classify_pixel($this->r_act, 3);
- $this->g_act = $this->classify_pixel($this->g_act, 3);
- $this->b_act = $this->classify_pixel($this->b_act, 2);
-
- if($this->r_act > 0xE0) $this->r_act = 0xE0;
- if($this->g_act > 0xE0) $this->g_act = 0xE0;
- if($this->b_act > 0xC0) $this->b_act = 0xC0;
-
- } else if($this->cf == self::CF_TRUE_COLOR_565 || $this->cf == self::CF_TRUE_COLOR_565_SWAP) {
- $this->r_act = $this->classify_pixel($this->r_act, 5);
- $this->g_act = $this->classify_pixel($this->g_act, 6);
- $this->b_act = $this->classify_pixel($this->b_act, 5);
-
- if($this->r_act > 0xF8) $this->r_act = 0xF8;
- if($this->g_act > 0xFC) $this->g_act = 0xFC;
- if($this->b_act > 0xF8) $this->b_act = 0xF8;
-
- } else if($this->cf == self::CF_TRUE_COLOR_888) {
- $this->r_act = $this->classify_pixel($this->r_act, 8);
- $this->g_act = $this->classify_pixel($this->g_act, 8);
- $this->b_act = $this->classify_pixel($this->b_act, 8);
-
- if($this->r_act > 0xFF) $this->r_act = 0xFF;
- if($this->g_act > 0xFF) $this->g_act = 0xFF;
- if($this->b_act > 0xFF) $this->b_act = 0xFF;
- }
-
- $this->r_err = $r - $this->r_act;
- $this->g_err = $g - $this->g_act;
- $this->b_err = $b - $this->b_act;
-
- $this->r_nerr = round((7 * $this->r_err) / 16);
- $this->g_nerr = round((7 * $this->g_err) / 16);
- $this->b_nerr = round((7 * $this->b_err) / 16);
-
- $this->r_earr[$x] += round((3 * $this->r_err) / 16);
- $this->g_earr[$x] += round((3 * $this->g_err) / 16);
- $this->b_earr[$x] += round((3 * $this->b_err) / 16);
-
- $this->r_earr[$x+1] += round((5 * $this->r_err) / 16);
- $this->g_earr[$x+1] += round((5 * $this->g_err) / 16);
- $this->b_earr[$x+1] += round((5 * $this->b_err) / 16);
-
- $this->r_earr[$x+2] += round($this->r_err / 16);
- $this->g_earr[$x+2] += round($this->g_err / 16);
- $this->b_earr[$x+2] += round($this->b_err / 16);
- }
- else{
- if($this->cf == self::CF_TRUE_COLOR_332) {
- $this->r_act = $this->classify_pixel($r, 3);
- $this->g_act = $this->classify_pixel($g, 3);
- $this->b_act = $this->classify_pixel($b, 2);
-
- if($this->r_act > 0xE0) $this->r_act = 0xE0;
- if($this->g_act > 0xE0) $this->g_act = 0xE0;
- if($this->b_act > 0xC0) $this->b_act = 0xC0;
-
- } else if($this->cf == self::CF_TRUE_COLOR_565 || $this->cf == self::CF_TRUE_COLOR_565_SWAP) {
- $this->r_act = $this->classify_pixel($r, 5);
- $this->g_act = $this->classify_pixel($g, 6);
- $this->b_act = $this->classify_pixel($b, 5);
-
- if($this->r_act > 0xF8) $this->r_act = 0xF8;
- if($this->g_act > 0xFC) $this->g_act = 0xFC;
- if($this->b_act > 0xF8) $this->b_act = 0xF8;
-
- } else if($this->cf == self::CF_TRUE_COLOR_888) {
- $this->r_act = $this->classify_pixel($r, 8);
- $this->g_act = $this->classify_pixel($g, 8);
- $this->b_act = $this->classify_pixel($b, 8);
-
- if($this->r_act > 0xFF) $this->r_act = 0xFF;
- if($this->g_act > 0xFF) $this->g_act = 0xFF;
- if($this->b_act > 0xFF) $this->b_act = 0xFF;
- }
- }
- }
-
- private function classify_pixel($value, $bits){
- $tmp = 1 << (8 - $bits);
- $val = round($value / $tmp, 0, PHP_ROUND_HALF_DOWN) * $tmp;
- if($val < 0) $val = 0;
- return $val;
- }
-}
-
-$offline = 0;
-if (!isset($_SERVER["HTTP_HOST"])) {
- parse_str($argv[1], $_POST);
- $offline = 1;
-}
-
-
-if($offline == 0){
- /*The scripts runs ONLINE (likely on littelvgl.com)*/
- header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
- header("Cache-Control: post-check=0, pre-check=0", false);
- header("Pragma: no-cache");
-
- $img_file = $_FILES["img_file"]["tmp_name"];
- $img_file_name = $_FILES["img_file"]["name"];
- $output_name = $_POST["name"];
- $cf = $_POST["cf"];
- $format = $_POST["format"];
- $dith = $_POST["dith"];
-}
-else{
- /*The scripts runs OFFLINE (likely in command)*/
- if(isset($_POST["name"])){
- $output_name = $_POST["name"];
- }
- else{
- echo("Mising Name\n");
- exit(0);
- }
-
- if(isset($_POST["img"])){
- $img_file = $_POST["img"];
- $img_file_name = $_POST["img"];
- }
- else{
- echo("Mising image file\n");
- exit(0);
- }
-
- if(isset($_POST["format"])){
- $format = $_POST["format"];
- }
- else{
- $format = "c_array";
- }
-
- if(isset($_POST["dith"])){
- $dith = $_POST["dith"];
- }
- else {
- $dith = 0;
- }
-
- if(isset($_POST["cf"])){
- $cf = $_POST["cf"];
- }
- else {
- $cf = "true_color";
- }
-}
-
-$conv = new Converter($img_file, $img_file_name, $output_name, $dith, $cf);
-
-if(!strcmp($format, "c_array")) {
- if(!strcmp($cf, "true_color") || !strcmp($cf, "true_color_alpha") || !strcmp($cf, "true_color_chroma")) {
- $alpha = 0;
- if(!strcmp($cf, "true_color_alpha")) $alpha = 1;
-
- $conv->convert($conv::CF_TRUE_COLOR_332, $alpha);
- $c_332 = $conv->format_to_c_array();
-
- $conv->convert($conv::CF_TRUE_COLOR_565, $alpha);
- $c_565 = $conv->format_to_c_array();
-
- $conv->convert($conv::CF_TRUE_COLOR_565_SWAP, $alpha);
- $c_565_swap = $conv->format_to_c_array();
-
- $conv->convert($conv::CF_TRUE_COLOR_888, $alpha);
- $c_888 = $conv->format_to_c_array();
-
- $c_res = $c_332 . $c_565 . $c_565_swap . $c_888;
-
- if(!strcmp($cf, "true_color")) $conv->download_c($conv->out_name, $conv::CF_TRUE_COLOR, $c_res);
- if(!strcmp($cf, "true_color_alpha")) $conv->download_c($conv->out_name, $conv::CF_TRUE_COLOR_ALPHA, $c_res);
- if(!strcmp($cf, "true_color_chroma")) $conv->download_c($conv->out_name, $conv::CF_TRUE_COLOR_CHROMA, $c_res);
- }
- else if(!strcmp($cf, "alpha_1")) {
- $conv->convert($conv::CF_ALPHA_1_BIT, 1);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_2")) {
- $conv->convert($conv::CF_ALPHA_2_BIT, 1);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_4")) {
- $conv->convert($conv::CF_ALPHA_4_BIT, 1);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_8")) {
- $conv->convert($conv::CF_ALPHA_8_BIT, 1);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_1")) {
- $conv->convert($conv::CF_INDEXED_1_BIT);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_2")) {
- $conv->convert($conv::CF_INDEXED_2_BIT);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_4")) {
- $conv->convert($conv::CF_INDEXED_4_BIT);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_8")) {
- $conv->convert($conv::CF_INDEXED_8_BIT);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "raw")) {
- $conv->convert($conv::CF_RAW);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "raw_alpha")) {
- $conv->convert($conv::CF_RAW_ALPHA, 1);
- $conv->download_c($conv->out_name);
- }
- else if(!strcmp($cf, "raw_chroma")) {
- $conv->convert($conv::CF_RAW_CHROMA);
- $conv->download_c($conv->out_name);
- }
-}
-/*Binary download*/
-else {
- if(!strcmp($cf, "true_color") || !strcmp($cf, "true_color_alpha") || !strcmp($cf, "true_color_chroma")) {
- $alpha = 0;
- if(!strcmp($cf, "true_color_alpha")) $alpha = 1;
-
- if (!strcmp($format, "bin_332")) $conv->convert($conv::CF_TRUE_COLOR_332, $alpha);
- else if (!strcmp($format, "bin_565")) $conv->convert($conv::CF_TRUE_COLOR_565, $alpha);
- else if (!strcmp($format, "bin_565_swap")) $conv->convert($conv::CF_TRUE_COLOR_565_SWAP, $alpha);
- else if (!strcmp($format, "bin_888")) $conv->convert($conv::CF_TRUE_COLOR_888, $alpha);
- else {
- echo("Unknown output file format: $format");
- exit(1);
- }
- if(!strcmp($cf, "true_color")) $conv->download_bin($conv->out_name, $conv::CF_TRUE_COLOR);
- if(!strcmp($cf, "true_color_alpha")) $conv->download_bin($conv->out_name, $conv::CF_TRUE_COLOR_ALPHA);
- if(!strcmp($cf, "true_color_chroma")) $conv->download_bin($conv->out_name, $conv::CF_TRUE_COLOR_CHROMA);
- }
- else if(!strcmp($cf, "alpha_1")) {
- $conv->convert($conv::CF_ALPHA_1_BIT, 1);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_2")) {
- $conv->convert($conv::CF_ALPHA_2_BIT, 1);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_4")) {
- $conv->convert($conv::CF_ALPHA_4_BIT, 1);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "alpha_8")) {
- $conv->convert($conv::CF_ALPHA_8_BIT, 1);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_1")) {
- $conv->convert($conv::CF_INDEXED_1_BIT);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_2")) {
- $conv->convert($conv::CF_INDEXED_2_BIT);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_4")) {
- $conv->convert($conv::CF_INDEXED_4_BIT);
- $conv->download_bin($conv->out_name);
- }
- else if(!strcmp($cf, "indexed_8")) {
- $conv->convert($conv::CF_INDEXED_8_BIT);
- $conv->download_bin($conv->out_name);
- }
-}
-
-
-
-
-/*
-$c_array .= "#include <stdint.h>
- #include \"lv_conf.h\"
- #include \"lvgl/lv_draw/lv_draw.h\""; */
-
-
-//download("test", $c_565);
-
-?>