Skip to content

Commit e590988

Browse files
committed
optimize max7219 gen code
1 parent 9a516b5 commit e590988

2 files changed

Lines changed: 246 additions & 258 deletions

File tree

generators/webduino.js

Lines changed: 3 additions & 258 deletions
Original file line numberDiff line numberDiff line change
@@ -1906,37 +1906,8 @@ Blockly.JavaScript['max7219_animate_horse'] = function (block) {
19061906
var value_times_ = Blockly.JavaScript.valueToCode(block, 'times_', Blockly.JavaScript.ORDER_ATOMIC);
19071907
var value_code_ = Blockly.JavaScript.valueToCode(block, 'code_', Blockly.JavaScript.ORDER_ATOMIC);
19081908
var dropdown_state_ = '"' + block.getFieldValue('state_') + '"';
1909-
var functionName = Blockly.JavaScript.provideFunction_(
1910-
'max7219_horse', ['function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ +
1911-
'(state,code) {',
1912-
' var b = code.split("");',
1913-
' var c;',
1914-
' var d = [];',
1915-
' if(code.length<16){',
1916-
' for(var i=0; i<(16-code.length); i++){',
1917-
' code = code + "0"',
1918-
' }',
1919-
' }',
1920-
' if(state=="left"){',
1921-
' for(var i=0; i<code.length/2; i++){',
1922-
' c = b.splice(0,2);',
1923-
' b.push(c[0],c[1]);',
1924-
' d[i] = b.join("");',
1925-
' d[i] = d[i].split("").splice(0,16).join("");',
1926-
' }',
1927-
' }else{',
1928-
' for(var i=0; i<code.length/2; i++){',
1929-
' c = b.splice((code.length-2),code.length);',
1930-
' b.unshift(c[0],c[1]);',
1931-
' d[i] = b.join("");',
1932-
' d[i] = d[i].split("").splice(0,16).join("");',
1933-
' }',
1934-
' }',
1935-
' return d;',
1936-
'}'
1937-
]);
19381909
var code = variable_name_ + '.animateStop();\n' +
1939-
variable_name_ + '.animate(' + functionName + '(' + dropdown_state_ + ',' + value_code_ + '),' + value_times_ + ');\n';
1910+
variable_name_ + '.animate(max7219_horse(' + dropdown_state_ + ',' + value_code_ + '),' + value_times_ + ');\n';
19401911
return code;
19411912

19421913
};
@@ -1997,246 +1968,20 @@ Blockly.JavaScript['max7219_88'] = function (block) {
19971968
return [code, Blockly.JavaScript.ORDER_ATOMIC];
19981969
};
19991970

2000-
function max7219_alphabet_object() {
2001-
var max7219_alphabet_object = {
2002-
"A": "00fc262226fc",
2003-
"a": "00f08888f880",
2004-
"B": "00fe929292fc",
2005-
"b": "00fe9090f0",
2006-
"C": "007cc6828282",
2007-
"c": "00f0909090",
2008-
"D": "00fe8282c67c",
2009-
"d": "00f09090fe",
2010-
"E": "00fe92929292",
2011-
"e": "00f8a8a8a8b8",
2012-
"F": "00fe12121202",
2013-
"f": "000008fe0a",
2014-
"G": "00fe829292f2",
2015-
"g": "0000bca4a4fc",
2016-
"H": "00fe101010fe",
2017-
"h": "00fe1010f0",
2018-
"I": "008282fe8282",
2019-
"i": "00f4",
2020-
"J": "00828282fe02",
2021-
"j": "000080f4",
2022-
"K": "00fe10284482",
2023-
"k": "00fe205088",
2024-
"L": "00fe80808080",
2025-
"l": "000000fe",
2026-
"M": "00fe02fc02fe",
2027-
"m": "00f010f010f0",
2028-
"N": "00fe0c30c0fe",
2029-
"n": "00f01010f0",
2030-
"O": "007cc682c67c",
2031-
"o": "00f09090f0",
2032-
"P": "00fe2222223e",
2033-
"p": "00fc24243c",
2034-
"Q": "007cc6a246bc",
2035-
"q": "003c2424fc80",
2036-
"R": "00fe2262e2be",
2037-
"r": "00f02010",
2038-
"S": "009e929292f2",
2039-
"s": "00b8a8a8e8",
2040-
"T": "000202fe0202",
2041-
"t": "0004fe84",
2042-
"U": "00fe808080fe",
2043-
"u": "00f08080f0",
2044-
"V": "003e60c0603e",
2045-
"v": "00708070",
2046-
"W": "00fe80fe80fe",
2047-
"w": "00f080f080f0",
2048-
"X": "00c66c106cc6",
2049-
"x": "008850205088",
2050-
"Y": "000e18f0180e",
2051-
"y": "00b8a0a0f8",
2052-
"Z": "00c2a2928a86",
2053-
"z": "00c8a8a898",
2054-
"0": "00fe8282fe",
2055-
"1": "0082fe80",
2056-
"2": "00f292929e",
2057-
"3": "00929292fe",
2058-
"4": "001e1010fe",
2059-
"5": "009e9292f2",
2060-
"6": "00fe9292f2",
2061-
"7": "00020202fe",
2062-
"8": "00fe9292fe",
2063-
"9": "009e9292fe",
2064-
":": "0028",
2065-
";": "008068",
2066-
".": "0080",
2067-
",": "008060",
2068-
"-": "00101010",
2069-
"_": "00808080",
2070-
"~": "00201010202010",
2071-
"\"": "000600060",
2072-
"+": "0010107c1010",
2073-
"/": "0080601804",
2074-
"?": "000601b10906",
2075-
"$": "005c54fe5474",
2076-
"%": "00089468102c5220",
2077-
"!": "00be",
2078-
"<": "00102844",
2079-
">": "00442810",
2080-
"(": "003c42",
2081-
")": "00423c",
2082-
"[": "007e42",
2083-
"]": "00427e",
2084-
"*": "004830fc3048",
2085-
"=": "00282828",
2086-
"#": "00287c287c28",
2087-
"@": "003844baaaba6458",
2088-
" ": "00"
2089-
};
2090-
}
2091-
2092-
20931971
Blockly.JavaScript['max7219_val_alphabet'] = function (block) {
20941972
var value_value_ = Blockly.JavaScript.valueToCode(block, 'value_', Blockly.JavaScript.ORDER_ATOMIC);
2095-
var functionName = Blockly.JavaScript.provideFunction_(
2096-
'max7219_alphabet_', ['function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ +
2097-
'(a) {',
2098-
max7219_alphabet_object.toString().replace('function max7219_alphabet_object() {\n', '').replace('};\n', '') + ';',
2099-
' var text="";',
2100-
' if(a.length>1){',
2101-
' for(var i=0; i<a.length; i++){',
2102-
' text = text + max7219_alphabet_object[a[i]];',
2103-
' }',
2104-
' }else{',
2105-
' text = max7219_alphabet_object[a];',
2106-
' }',
2107-
' var t = text.length;',
2108-
' if(t<16){',
2109-
' for(var i=0; i<(16-t); i++){',
2110-
' text = text + "0";',
2111-
' }',
2112-
' }',
2113-
' return text;',
2114-
'}'
2115-
]);
2116-
var code = functionName + '(' + value_value_ + ')';
1973+
var code = 'max7219_alphabet(' + value_value_ + ')';
21171974
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
21181975
};
21191976

2120-
function max7219_number_object() {
2121-
var max7219_number_object = {
2122-
"0": "0000fe8282fe0000",
2123-
"1": "00000082fe800000",
2124-
"2": "0000f292929e0000",
2125-
"3": "0000929292fe0000",
2126-
"4": "00001e1010fe0000",
2127-
"5": "00009e9292f20000",
2128-
"6": "0000fe9292f20000",
2129-
"7": "0000020202fe0000",
2130-
"8": "0000fe9292fe0000",
2131-
"9": "00009e9292fe0000",
2132-
"10": "82fe8000fe82fe00",
2133-
"11": "82fe800082fe8000",
2134-
"12": "82fe8000f2929e00",
2135-
"13": "82fe80009292fe00",
2136-
"14": "82fe80001e10fe00",
2137-
"15": "82fe80009e92f200",
2138-
"16": "82fe8000fe92f200",
2139-
"17": "82fe80000202fe00",
2140-
"18": "82fe8000fe92fe00",
2141-
"19": "82fe80009e92fe00",
2142-
"20": "f2929e00fe82fe00",
2143-
"21": "f2929e0082fe8000",
2144-
"22": "f2929e00f2929e00",
2145-
"23": "f2929e009292fe00",
2146-
"24": "f2929e001e10fe00",
2147-
"25": "f2929e009e92f200",
2148-
"26": "f2929e00fe92f200",
2149-
"27": "f2929e000202fe00",
2150-
"28": "f2929e00fe92fe00",
2151-
"29": "f2929e009e92fe00",
2152-
"30": "9292fe00fe82fe00",
2153-
"31": "9292fe0082fe8000",
2154-
"32": "9292fe00f2929e00",
2155-
"33": "9292fe009292fe00",
2156-
"34": "9292fe001e10fe00",
2157-
"35": "9292fe009e92f200",
2158-
"36": "9292fe00fe92f200",
2159-
"37": "9292fe000202fe00",
2160-
"38": "9292fe00fe92fe00",
2161-
"39": "9292fe009e92fe00",
2162-
"40": "1e10fe00fe82fe00",
2163-
"41": "1e10fe0082fe8000",
2164-
"42": "1e10fe00f2929e00",
2165-
"43": "1e10fe009292fe00",
2166-
"44": "1e10fe001e10fe00",
2167-
"45": "1e10fe009e92f200",
2168-
"46": "1e10fe00fe92f200",
2169-
"47": "1e10fe000202fe00",
2170-
"48": "1e10fe00fe92fe00",
2171-
"49": "1e10fe009e92fe00",
2172-
"50": "9e92f200fe82fe00",
2173-
"51": "9e92f20082fe8000",
2174-
"52": "9e92f200f2929e00",
2175-
"53": "9e92f2009292fe00",
2176-
"54": "9e92f2001e10fe00",
2177-
"55": "9e92f2009e92f200",
2178-
"56": "9e92f200fe92f200",
2179-
"57": "9e92f2000202fe00",
2180-
"58": "9e92f200fe92fe00",
2181-
"59": "9e92f2009e92fe00",
2182-
"60": "fe92f200fe82fe00",
2183-
"61": "fe92f20082fe8000",
2184-
"62": "fe92f200f2929e00",
2185-
"63": "fe92f2009292fe00",
2186-
"64": "fe92f2001e10fe00",
2187-
"65": "fe92f2009e92f200",
2188-
"66": "fe92f200fe92f200",
2189-
"67": "fe92f2000202fe00",
2190-
"68": "fe92f200fe92fe00",
2191-
"69": "fe92f2009e92fe00",
2192-
"70": "0202fe00fe82fe00",
2193-
"71": "0202fe0082fe8000",
2194-
"72": "0202fe00f2929e00",
2195-
"73": "0202fe009292fe00",
2196-
"74": "0202fe001e10fe00",
2197-
"75": "0202fe009e92f200",
2198-
"76": "0202fe00fe92f200",
2199-
"77": "0202fe000202fe00",
2200-
"78": "0202fe00fe92fe00",
2201-
"79": "0202fe009e92fe00",
2202-
"80": "fe92fe00fe82fe00",
2203-
"81": "fe92fe0082fe8000",
2204-
"82": "fe92fe00f2929e00",
2205-
"83": "fe92fe009292fe00",
2206-
"84": "fe92fe001e10fe00",
2207-
"85": "fe92fe009e92f200",
2208-
"86": "fe92fe00fe92f200",
2209-
"87": "fe92fe000202fe00",
2210-
"88": "fe92fe00fe92fe00",
2211-
"89": "fe92fe009e92fe00",
2212-
"90": "9e92fe00fe82fe00",
2213-
"91": "9e92fe0082fe8000",
2214-
"92": "9e92fe00f2929e00",
2215-
"93": "9e92fe009292fe00",
2216-
"94": "9e92fe001e10fe00",
2217-
"95": "9e92fe009e92f200",
2218-
"96": "9e92fe00fe92f200",
2219-
"97": "9e92fe000202fe00",
2220-
"98": "9e92fe00fe92fe00",
2221-
"99": "9e92fe009e92fe00"
2222-
};
2223-
}
2224-
22251977
Blockly.JavaScript['max7219_val_num'] = function (block) {
22261978
var value_value_ = Blockly.JavaScript.valueToCode(block, 'value_', Blockly.JavaScript.ORDER_ATOMIC);
2227-
var functionName = Blockly.JavaScript.provideFunction_(
2228-
'max7219_number', ['function ' + Blockly.JavaScript.FUNCTION_NAME_PLACEHOLDER_ +
2229-
'(num) {',
2230-
max7219_number_object.toString().replace('function max7219_number_object() {\n', '').replace('};\n', '') + ';',
2231-
' return max7219_number_object[num];',
2232-
'}'
2233-
]);
22341979
var code;
22351980
if (value_value_ * 1 < 0 || value_value_ * 1 > 99) {
22361981
code = '"00000601b1110e00"';
22371982
return [code, Blockly.JavaScript.ORDER_ATOMIC];
22381983
} else {
2239-
code = functionName + '(' + value_value_ + ')';
1984+
code = 'max7219_number(' + value_value_ + ')';
22401985
return [code, Blockly.JavaScript.ORDER_FUNCTION_CALL];
22411986
}
22421987
};

0 commit comments

Comments
 (0)