From 6c1696f4c690c635a2fd6088324f3baa7f444841 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 29 Aug 2013 16:07:09 +0200 Subject: [PATCH 01/15] Fixed application signing check for codesign. Sometimes "codesign" returns error code 1 when replacing an already existing signature. --- build/build.xml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/build/build.xml b/build/build.xml index 93e7da22a..99a1fa4d7 100644 --- a/build/build.xml +++ b/build/build.xml @@ -284,10 +284,15 @@ - + + + + + + From fa3fc39c3fc09b2cb7918836ffe3299d0ae23983 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 29 Aug 2013 16:17:14 +0200 Subject: [PATCH 02/15] Fixed output filename in build.xml --- build/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build.xml b/build/build.xml index 99a1fa4d7..162704a8e 100644 --- a/build/build.xml +++ b/build/build.xml @@ -297,7 +297,7 @@ - + From 3cf06be044657847df45bf96d2c981df68bc4c97 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 29 Aug 2013 18:26:53 +0200 Subject: [PATCH 03/15] Fixed arm toolchain unpack for macosx. --- build/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build.xml b/build/build.xml index 162704a8e..158a7c3b4 100644 --- a/build/build.xml +++ b/build/build.xml @@ -535,7 +535,7 @@ - + From 690eac40476461ed135915aee572cddd7da756ac Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 30 Aug 2013 10:35:31 +0200 Subject: [PATCH 04/15] Moved arm-gcc upgrade to specific development branch --- build/build.xml | 24 +++++++++---------- ...e-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha | 1 + ...-none-eabi-4.7.4-2013q2-linux32.tar.gz.sha | 1 - ...-none-eabi-4.7.4-2013q2-linux64.tar.gz.sha | 1 - ...one-eabi-4.4.1-2010q1-188-macos.tar.gz.sha | 1 + ...-arm-none-eabi-4.7.4-2013q2-mac.tar.gz.sha | 1 - build/shared/revisions.txt | 2 -- ...one-eabi-4.4.1-2010q1-188-win32.tar.gz.sha | 1 + ...-none-eabi-4.7.4-2013q2-windows.tar.gz.sha | 1 - hardware/arduino/sam/platform.txt | 2 +- 10 files changed, 16 insertions(+), 19 deletions(-) create mode 100644 build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha delete mode 100644 build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz.sha delete mode 100644 build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz.sha create mode 100644 build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha delete mode 100644 build/macosx/dist/gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz.sha create mode 100644 build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha delete mode 100644 build/windows/dist/gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz.sha diff --git a/build/build.xml b/build/build.xml index 158a7c3b4..0c406f320 100644 --- a/build/build.xml +++ b/build/build.xml @@ -242,9 +242,9 @@ - - - + + + @@ -469,9 +469,9 @@ - - - + + + @@ -489,9 +489,9 @@ - - - + + + @@ -685,9 +685,9 @@ - - - + + + diff --git a/build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha b/build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha new file mode 100644 index 000000000..29a002ad1 --- /dev/null +++ b/build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha @@ -0,0 +1 @@ +46a93ceec28772ac19c76ffc9b285a1eac4288a3 diff --git a/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz.sha b/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz.sha deleted file mode 100644 index 0d4dce966..000000000 --- a/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz.sha +++ /dev/null @@ -1 +0,0 @@ -b35a6b9b1066977509ad5dcf51936b7a6bb18c18 diff --git a/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz.sha b/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz.sha deleted file mode 100644 index d88a6ac83..000000000 --- a/build/linux/dist/gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz.sha +++ /dev/null @@ -1 +0,0 @@ -14afebbb1a26b799237080ec32b300a409ff99cb diff --git a/build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha b/build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha new file mode 100644 index 000000000..3b951bb7f --- /dev/null +++ b/build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha @@ -0,0 +1 @@ +14c554bb9aa9f0d0262a593e7452d33f4babc60d diff --git a/build/macosx/dist/gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz.sha b/build/macosx/dist/gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz.sha deleted file mode 100644 index a265218f9..000000000 --- a/build/macosx/dist/gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz.sha +++ /dev/null @@ -1 +0,0 @@ -a1326c6258f91d9b318570bc619ca8a3b799d8bc diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index 832c591ea..a01608bca 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -7,8 +7,6 @@ ARDUINO 1.5.3 BETA * Added support for new 1.5 Library format (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification) * Pass board type from boards.txt (https://github.com/arduino/Arduino/issues/308) * Display estimated RAM usage after compile (Loren M. Lang) -* Updated arm gcc to 4.7.4 and simplified build.xml -* ARM gcc doesn't require ia32-libs anymore on 64 bits linux systems * Import library menu is now scrollable * Scrollable menus can now be scrolled with the mouse wheel diff --git a/build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha b/build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha new file mode 100644 index 000000000..068b717e3 --- /dev/null +++ b/build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha @@ -0,0 +1 @@ +f288affa058bfdd44f8b93800fc4cb01b2ebf1e5 diff --git a/build/windows/dist/gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz.sha b/build/windows/dist/gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz.sha deleted file mode 100644 index 0c66d28a8..000000000 --- a/build/windows/dist/gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz.sha +++ /dev/null @@ -1 +0,0 @@ -c41fa509205b9ced43fc221b6a0cae4223a0842d diff --git a/hardware/arduino/sam/platform.txt b/hardware/arduino/sam/platform.txt index f71dda989..71bd742b1 100644 --- a/hardware/arduino/sam/platform.txt +++ b/hardware/arduino/sam/platform.txt @@ -10,7 +10,7 @@ version=1.5.3 # SAM3 compile variables # ---------------------- -compiler.path={runtime.ide.path}/hardware/tools/gcc-arm-none-eabi-4.7.4-2013q2/bin/ +compiler.path={runtime.ide.path}/hardware/tools/g++_arm_none_eabi/bin/ compiler.c.cmd=arm-none-eabi-gcc compiler.c.flags=-c -g -Os -w -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf compiler.c.elf.cmd=arm-none-eabi-g++ From 51602496eb619502f6da708072a6c5a637a57f38 Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Fri, 30 Aug 2013 17:19:06 +0200 Subject: [PATCH 05/15] removed output from exec tar: windows does not know /dev/null --- build/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/build.xml b/build/build.xml index 0c406f320..ae8c48bb8 100644 --- a/build/build.xml +++ b/build/build.xml @@ -535,7 +535,7 @@ - + From 9cd8541df92997651bbf709a2dac38c0db9e59d4 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 30 Aug 2013 17:54:28 +0200 Subject: [PATCH 06/15] Updated revision log --- build/shared/revisions.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index a01608bca..d854326bd 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -1,5 +1,5 @@ -ARDUINO 1.5.3 BETA +ARDUINO 1.5.3 BETA 2013.08.30 [ide] * Removed useless baud rates from serial monitor From 003ff28ed85406a9827049ef1103587910964f6e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sat, 31 Aug 2013 15:20:15 +0200 Subject: [PATCH 07/15] Wrong boards.txt entry (sub-menu items) for Arduino Nano w/atmega328. Fixes #1558 --- hardware/arduino/avr/boards.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/arduino/avr/boards.txt b/hardware/arduino/avr/boards.txt index 5c674e7ef..585740660 100644 --- a/hardware/arduino/avr/boards.txt +++ b/hardware/arduino/avr/boards.txt @@ -99,7 +99,7 @@ nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA nano.menu.cpu.atmega328.bootloader.extended_fuses=0x05 nano.menu.cpu.atmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex -menu.cpu.nano.atmega328.build.mcu=atmega328p +nano.menu.cpu.atmega328.build.mcu=atmega328p ## Arduino Nano w/ ATmega168 ## ------------------------- From 011ffa2ab34cc4c6996ff5cb9729cfd5a5ecfeb2 Mon Sep 17 00:00:00 2001 From: Xun Yang Date: Sat, 31 Aug 2013 17:21:39 +0200 Subject: [PATCH 08/15] Added line follow parameters for older robots. "(14,9,50,10)" fits better for robots that has "TK" markings on top. --- .../examples/explore/R02_Line_Follow/R02_Line_Follow.ino | 3 ++- .../Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino b/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino index 27402e9b5..2e37e95d7 100644 --- a/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino +++ b/libraries/Robot_Control/examples/explore/R02_Line_Follow/R02_Line_Follow.ino @@ -42,9 +42,10 @@ void setup() { // These are some general values that work for line following // uncomment one or the other to see the different behaviors of the robot - // Robot.lineFollowConfig(11, 5, 50, 10); + //Robot.lineFollowConfig(14, 9, 50, 10); Robot.lineFollowConfig(11, 7, 60, 5); + //set the motor board into line-follow mode Robot.setMode(MODE_LINE_FOLLOW); diff --git a/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino b/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino index 4f0e8223c..717e301e5 100644 --- a/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino +++ b/libraries/Robot_Control/examples/explore/R10_Rescue/R10_Rescue.ino @@ -54,7 +54,7 @@ void setup(){ // use this to calibrate the line following algorithm // uncomment one or the other to see the different behaviors of the robot - // Robot.lineFollowConfig(11, 5, 50, 10); + // Robot.lineFollowConfig(14, 9, 50, 10); Robot.lineFollowConfig(11, 7, 60, 5); // run the rescue sequence From 4edca6f01d9a4bd88149d432d08468456f46ab57 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Sun, 1 Sep 2013 13:44:29 +0200 Subject: [PATCH 09/15] Refactored Languages array --- app/src/processing/app/Preferences.java | 162 ++++++++++-------------- 1 file changed, 69 insertions(+), 93 deletions(-) diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index c7a7f8029..e502270f2 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -73,95 +73,68 @@ public class Preferences { static final String PREFS_FILE = "preferences.txt"; - String[] languages = { - _("System Default"), - "العربية" + " (" + _("Arabic") + ")", - "Aragonés" + " (" + _("Aragonese") + ")", - "български" + " (" + _("Bulgarian") + ")", - "Català" + " (" + _("Catalan") + ")", - "Hrvatski" + " (" + _("Croatian") + ")", - "český" + " (" + _("Czech") + ")", - "简体中文" + " (" + _("Chinese Simplified") + ")", - "繁體中文" + " (" + _("Chinese Traditional") + ")", - "Dansk" + " (" + _("Danish") + ")", - "Nederlands" + " (" + _("Dutch") + ")", - "English" + " (" + _("English") + ")", - "Eesti" + " (" + _("Estonian") + ")", - "Pilipino" + " (" + _("Filipino") + ")", - "Français" + " (" + _("French") + ")", - "Canadienne-français" + " (" + _("Canadian French") + ")", - "Galego" + " (" + _("Galician") + ")", - "საქართველოს" + " (" + _("Georgian") + ")", - "עברית" + " (" + _("Hebrew") + ")", - "Deutsch" + " (" + _("German") + ")", - "ελληνικά" + " (" + _("Greek") + ")", - "Magyar" + " (" + _("Hindi") + ")", - "Magyar" + " (" + _("Hungarian") + ")", - "Bahasa Indonesia" + " (" + _("Indonesian") + ")", - "Italiano" + " (" + _("Italian") + ")", - "日本語" + " (" + _("Japanese") + ")", - "한국어" + " (" + _("Korean") + ")", - "Latviešu" + " (" + _("Latvian") + ")", - "Lietuvių Kalba" + " (" + _("Lithuaninan") + ")", - "मराठी" + " (" + _("Marathi") + ")", - "Norsk" + " (" + _("Norwegian") + ")", - "Norsk bokmål" + " (" + _("Norwegian Bokmål") + ")", - "فارسی" + " (" + _("Persian") + ")", - "Język Polski" + " (" + _("Polish") + ")", - "Português" + " (" + _("Portuguese") + " - Brazil)", - "Português" + " (" + _("Portuguese") + " - Portugal)", - "Română" + " (" + _("Romanian") + ")", - "Русский" + " (" + _("Russian") + ")", - "Español" + " (" + _("Spanish") + ")", - "தமிழ்" + " (" + _("Tamil") + ")", - "Türk" + " (" + _("Turkish") + ")", - "Український" + " (" + _("Ukrainian") + ")" - }; - String[] languagesISO = { - "", - "ar", - "an", - "bg", - "ca", - "hr_hr", - "cs_cz", - "zh_cn", - "zh_tw", - "da", - "nl", - "en", - "et", - "tl", - "fr", - "fr_ca", - "gl", - "ka_ge", - "he", - "de", - "el", - "hi", - "hu", - "id", - "it", - "ja", - "ko", - "lv", - "lt", - "mr", - "no_nb", - "nb_no", - "fa", - "pl", - "pt_br", - "pt_pt", - "ro", - "ru", - "es", - "ta", - "tr", - "uk" - }; - + class Language { + Language(String _name, String _originalName, String _isoCode) { + name = _name; + originalName = _originalName; + isoCode = _isoCode; + } + + public String toString() { + if (originalName.length() == 0) + return name; + return originalName + " (" + name + ")"; + }; + + String name; + String originalName; + String isoCode; + } + + Language languages[] = { + new Language(_("System Default"), "", ""), + new Language(_("Arabic"), "العربية", "ar"), + new Language(_("Aragonese"), "Aragonés", "an"), + new Language(_("Bulgarian"), "български", "bg"), + new Language(_("Catalan"), "Català", "ca"), + new Language(_("Croatian"), "Hrvatski", "hr_hr"), + new Language(_("Czech"), "český", "cs_cz"), + new Language(_("Chinese Simplified"), "简体中文", "zh_cn"), + new Language(_("Chinese Traditional"), "繁體中文", "zh_tw"), + new Language(_("Danish"), "Dansk", "da"), + new Language(_("Dutch"), "Nederlands", "nl"), + new Language(_("English"), "English", "en"), + new Language(_("Estonian"), "Eesti", "et"), + new Language(_("Filipino"), "Pilipino", "tl"), + new Language(_("French"), "Français", "fr"), + new Language(_("Canadian French"), "Canadienne-français", "fr_ca"), + new Language(_("Galician"), "Galego", "gl"), + new Language(_("Georgian"), "საქართველოს", "ka_ge"), + new Language(_("German"), "Deutsch", "de"), + new Language(_("Greek"), "ελληνικά", "el"), + new Language(_("Hebrew"), "עברית", "he"), + new Language(_("Hindi"), "हिंदी", "hi"), + new Language(_("Hungarian"), "Magyar", "hu"), + new Language(_("Indonesian"), "Bahasa Indonesia", "id"), + new Language(_("Italian"), "Italiano", "it"), + new Language(_("Japanese"), "日本語", "ja"), + new Language(_("Korean"), "한국어", "ko"), + new Language(_("Latvian"), "Latviešu", "lv"), + new Language(_("Lithuaninan"), "Lietuvių Kalba", "lt"), + new Language(_("Marathi"), "मराठी", "mr"), + new Language(_("Norwegian"), "Norsk", "no_nb"), + new Language(_("Norwegian Bokmål"), "Norsk bokmål", "nb_no"), + new Language(_("Persian"), "فارسی", "fa"), + new Language(_("Polish"), "Język Polski", "pl"), + new Language(_("Portuguese (Brazil)"), "Português (Brazil)", "pt_br"), + new Language(_("Portuguese (Portugal)"), "Português (Portugal)", "pt_pt"), + new Language(_("Romanian"), "Română", "ro"), + new Language(_("Russian"), "Русский", "ru"), + new Language(_("Spanish"), "Español", "es"), + new Language(_("Tamil"), "தமிழ்", "ta"), + new Language(_("Turkish"), "Türk", "tr"), + new Language(_("Ukrainian"), "Український", "uk"), }; + /** * Standardized width for buttons. Mac OS X 10.3 wants 70 as its default, * Windows XP needs 66, and my Ubuntu machine needs 80+, so 80 seems proper. @@ -386,7 +359,11 @@ public class Preferences { label = new JLabel(_("Editor language: ")); box.add(label); comboLanguage = new JComboBox(languages); - comboLanguage.setSelectedIndex((Arrays.asList(languagesISO)).indexOf(Preferences.get("editor.languages.current"))); + String currentLanguage = Preferences.get("editor.languages.current"); + for (Language language : languages) { + if (language.isoCode.equals(currentLanguage)) + comboLanguage.setSelectedItem(language); + } box.add(comboLanguage); label = new JLabel(_(" (requires restart of Arduino)")); box.add(label); @@ -676,9 +653,8 @@ public class Preferences { setBoolean("editor.update_extension", updateExtensionBox.isSelected()); // adds the selected language to the preferences file - Object newItem = comboLanguage.getSelectedItem(); - int pos = (Arrays.asList(languages)).indexOf(newItem.toString()); // position in the languages array - set("editor.languages.current",(Arrays.asList(languagesISO)).get(pos)); + Language newLanguage = (Language) comboLanguage.getSelectedItem(); + set("editor.languages.current", newLanguage.isoCode); editor.applyPreferences(); } From 448595d0b25886a333acffeee499abab00bc8e37 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 3 Sep 2013 11:08:07 +0200 Subject: [PATCH 10/15] Removed some java warnings --- app/src/processing/app/Preferences.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index e502270f2..f9319cd7c 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -190,7 +190,7 @@ public class Preferences { // data model - static Hashtable defaults; + static Hashtable defaults; static Hashtable table = new Hashtable(); static File preferencesFile; @@ -226,7 +226,7 @@ public class Preferences { } // clone the hash table - defaults = (Hashtable) table.clone(); + defaults = new Hashtable(table); // Load a prefs file if specified on the command line if (commandLinePrefs != null) { @@ -701,7 +701,7 @@ public class Preferences { load(input, table); } - static public void load(InputStream input, Map table) throws IOException { + static public void load(InputStream input, Map table) throws IOException { String[] lines = loadStrings(input); // Reads as UTF-8 for (String line : lines) { if ((line.length() == 0) || @@ -806,7 +806,7 @@ public class Preferences { static public String getDefault(String attribute) { - return (String) defaults.get(attribute); + return defaults.get(attribute); } From ed41a67614af29fe50488bf1a186b04391f87ccb Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 3 Sep 2013 11:36:57 +0200 Subject: [PATCH 11/15] Silently revert to system i18n language, if the currently selected language is not available. --- app/src/processing/app/I18n.java | 10 ++++++---- app/src/processing/app/Preferences.java | 7 ++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/processing/app/I18n.java b/app/src/processing/app/I18n.java index 6c7c9079d..d87442c0a 100644 --- a/app/src/processing/app/I18n.java +++ b/app/src/processing/app/I18n.java @@ -28,14 +28,16 @@ public class I18n { static String PROMPT_OK; static String PROMPT_BROWSE; - static protected void init (String language) { + static protected void init (String language) throws MissingResourceException { // there might be a null pointer exception ... most likely will never happen but the jvm gets mad try { if (language != null && language.trim().length() > 0) { - Locale.setDefault(new Locale(language)); + Locale locale = new Locale(language); + i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", locale); + Locale.setDefault(locale); + } else { + i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", Locale.getDefault()); } - i18n = ResourceBundle.getBundle("processing.app.i18n.Resources", Locale.getDefault()); - PROMPT_YES = _("Yes"); PROMPT_NO = _("No"); PROMPT_CANCEL = _("Cancel"); diff --git a/app/src/processing/app/Preferences.java b/app/src/processing/app/Preferences.java index f9319cd7c..6505b9cef 100644 --- a/app/src/processing/app/Preferences.java +++ b/app/src/processing/app/Preferences.java @@ -267,7 +267,12 @@ public class Preferences { } // load the I18n module for internationalization - I18n.init(Preferences.get("editor.languages.current")); + try { + I18n.init(Preferences.get("editor.languages.current")); + } catch (MissingResourceException e) { + I18n.init(""); + Preferences.set("editor.languages.current", ""); + } // set some other runtime constants (not saved on preferences file) table.put("runtime.os", PConstants.platformNames[PApplet.platform]); From 2ebd47ab534c723ad30a8bb2e87b126eda2f579e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 3 Sep 2013 14:50:33 +0200 Subject: [PATCH 12/15] [sam] fixed SPI initialization Fixes #1561 --- build/shared/revisions.txt | 5 +++++ libraries/SPI/arch/sam/SPI.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index d854326bd..a2db0fd73 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -1,4 +1,9 @@ +ARDUINO 1.5.4 BETA + +[libraries] +* sam: fixed wrong SPI initialization (noblepepper) + ARDUINO 1.5.3 BETA 2013.08.30 [ide] diff --git a/libraries/SPI/arch/sam/SPI.cpp b/libraries/SPI/arch/sam/SPI.cpp index 7494c21e2..f07b94eb3 100644 --- a/libraries/SPI/arch/sam/SPI.cpp +++ b/libraries/SPI/arch/sam/SPI.cpp @@ -30,6 +30,10 @@ void SPIClass::begin() { } void SPIClass::begin(uint8_t _pin) { + initCb(); + SPI_Configure(spi, id, SPI_MR_MSTR | SPI_MR_PS | SPI_MR_MODFDIS); + SPI_Enable(spi); + uint32_t spiPin = BOARD_PIN_TO_SPI_PIN(_pin); PIO_Configure( g_APinDescription[spiPin].pPort, From c86eed942dd3d7d0bced4fb26fb28ee57fccff07 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 3 Sep 2013 18:40:30 +0200 Subject: [PATCH 13/15] Fixed String class regression after f80c6c5f35cddcf4761a3c97feb8504425e9d27d This should make explicit String-from-integer constructor working again: int a = 10; String(a, 4); --- hardware/arduino/avr/cores/arduino/WString.cpp | 4 ++-- hardware/arduino/avr/cores/arduino/WString.h | 6 +++--- hardware/arduino/sam/cores/arduino/WString.cpp | 4 ++-- hardware/arduino/sam/cores/arduino/WString.h | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/hardware/arduino/avr/cores/arduino/WString.cpp b/hardware/arduino/avr/cores/arduino/WString.cpp index e462beeb2..63af6d340 100644 --- a/hardware/arduino/avr/cores/arduino/WString.cpp +++ b/hardware/arduino/avr/cores/arduino/WString.cpp @@ -106,14 +106,14 @@ String::String(unsigned long value, unsigned char base) *this = buf; } -String::String(float value, int decimalPlaces) +String::String(float value, unsigned char decimalPlaces) { init(); char buf[33]; *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); } -String::String(double value, int decimalPlaces) +String::String(double value, unsigned char decimalPlaces) { init(); char buf[33]; diff --git a/hardware/arduino/avr/cores/arduino/WString.h b/hardware/arduino/avr/cores/arduino/WString.h index f801f6384..740243092 100644 --- a/hardware/arduino/avr/cores/arduino/WString.h +++ b/hardware/arduino/avr/cores/arduino/WString.h @@ -69,8 +69,8 @@ public: explicit String(unsigned int, unsigned char base=10); explicit String(long, unsigned char base=10); explicit String(unsigned long, unsigned char base=10); - explicit String(float, int decimalPlaces=2); - explicit String(double, int decimalPlaces=2); + explicit String(float, unsigned char decimalPlaces=2); + explicit String(double, unsigned char decimalPlaces=2); ~String(void); // memory management @@ -113,7 +113,7 @@ public: String & operator += (const String &rhs) {concat(rhs); return (*this);} String & operator += (const char *cstr) {concat(cstr); return (*this);} String & operator += (char c) {concat(c); return (*this);} - String & operator += (unsigned char num) {concat(num); return (*this);} + String & operator += (unsigned char num) {concat(num); return (*this);} String & operator += (int num) {concat(num); return (*this);} String & operator += (unsigned int num) {concat(num); return (*this);} String & operator += (long num) {concat(num); return (*this);} diff --git a/hardware/arduino/sam/cores/arduino/WString.cpp b/hardware/arduino/sam/cores/arduino/WString.cpp index a6b82fd61..d0783a2ec 100644 --- a/hardware/arduino/sam/cores/arduino/WString.cpp +++ b/hardware/arduino/sam/cores/arduino/WString.cpp @@ -107,14 +107,14 @@ String::String(unsigned long value, unsigned char base) *this = buf; } -String::String(float value, int decimalPlaces) +String::String(float value, unsigned char decimalPlaces) { init(); char buf[33]; *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); } -String::String(double value, int decimalPlaces) +String::String(double value, unsigned char decimalPlaces) { init(); char buf[33]; diff --git a/hardware/arduino/sam/cores/arduino/WString.h b/hardware/arduino/sam/cores/arduino/WString.h index f0077dfbe..740243092 100644 --- a/hardware/arduino/sam/cores/arduino/WString.h +++ b/hardware/arduino/sam/cores/arduino/WString.h @@ -69,8 +69,8 @@ public: explicit String(unsigned int, unsigned char base=10); explicit String(long, unsigned char base=10); explicit String(unsigned long, unsigned char base=10); - explicit String(float, int decimalPlaces=2); - explicit String(double, int decimalPlaces=2); + explicit String(float, unsigned char decimalPlaces=2); + explicit String(double, unsigned char decimalPlaces=2); ~String(void); // memory management From 4cdd4dfcbaa1dc2cbdc90b025d66dd3d26d22610 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 4 Sep 2013 12:42:46 +0200 Subject: [PATCH 14/15] Updated incorrect revision log. --- build/shared/revisions.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index a2db0fd73..c5442efff 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -30,7 +30,8 @@ ARDUINO 1.5.3 BETA 2013.08.30 * removed unused flags from String (free 1 byte of SRAM) [libraries] -* sam: Added CAN library (still in early stage of development) (Palliser) +* sam: Removed CAN library, you can find an updated version here: + https://github.com/collin80/due_can * sam: Bugfix SPI library: begin() after end() now works (stimmer) * sam: Bugfix SPI library: incorrent pin configuration in non-extended mode. * Ported all libraries to new 1.5 format From b5ba1617f7fa819893df8a7adf22e4271029a0ac Mon Sep 17 00:00:00 2001 From: Fede85 Date: Fri, 6 Sep 2013 12:39:15 +0200 Subject: [PATCH 15/15] Latest Adafruit_GFX fixes Updated constructor and dependent code, other minor fixes. --- libraries/TFT/src/utility/Adafruit_GFX.cpp | 254 ++++++++++-------- libraries/TFT/src/utility/Adafruit_GFX.h | 177 ++++++------ libraries/TFT/src/utility/Adafruit_ST7735.cpp | 10 +- libraries/TFT/src/utility/Adafruit_ST7735.h | 2 +- 4 files changed, 247 insertions(+), 196 deletions(-) diff --git a/libraries/TFT/src/utility/Adafruit_GFX.cpp b/libraries/TFT/src/utility/Adafruit_GFX.cpp index a7a541cc7..6478c47c9 100644 --- a/libraries/TFT/src/utility/Adafruit_GFX.cpp +++ b/libraries/TFT/src/utility/Adafruit_GFX.cpp @@ -1,40 +1,56 @@ -/****************************************************************** - This is the core graphics library for all our displays, providing - basic graphics primitives (points, lines, circles, etc.). It needs - to be paired with a hardware-specific library for each display - device we carry (handling the lower-level functions). - - Adafruit invests time and resources providing this open - source code, please support Adafruit and open-source hardware - by purchasing products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - BSD license, check license.txt for more information. - All text above must be included in any redistribution. - ******************************************************************/ +/* +This is the core graphics library for all our displays, providing a common +set of graphics primitives (points, lines, circles, etc.). It needs to be +paired with a hardware-specific library for each display device we carry +(to handle the lower-level functions). + +Adafruit invests time and resources providing this open source code, please +support Adafruit & open-source hardware by purchasing products from Adafruit! + +Copyright (c) 2013 Adafruit Industries. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +- Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +*/ #include "Adafruit_GFX.h" #include "glcdfont.c" -#include +#ifdef __AVR__ + #include +#else + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#endif -void Adafruit_GFX::constructor(int16_t w, int16_t h) { - _width = WIDTH = w; - _height = HEIGHT = h; - - rotation = 0; - cursor_y = cursor_x = 0; - textsize = 1; +Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) : + WIDTH(w), HEIGHT(h) +{ + _width = WIDTH; + _height = HEIGHT; + rotation = 0; + cursor_y = cursor_x = 0; + textsize = 1; textcolor = textbgcolor = 0xFFFF; wrap = true; - - strokeColor = 0; - useStroke = true; - fillColor = 0; - useFill = false; - } - // draw a circle outline void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) { @@ -66,8 +82,7 @@ void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, drawPixel(x0 + y, y0 + x, color); drawPixel(x0 - y, y0 + x, color); drawPixel(x0 + y, y0 - x, color); - drawPixel(x0 - y, y0 - x, color); - + drawPixel(x0 - y, y0 - x, color); } } @@ -107,16 +122,17 @@ void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0, } } -void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) +{ drawFastVLine(x0, y0-r, 2*r+1, color); fillCircleHelper(x0, y0, r, 3, 0, color); } -// used to do circles and roundrects! +// used to do circles and roundrects void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color) { - + uint8_t cornername, int16_t delta, uint16_t color) +{ int16_t f = 1 - r; int16_t ddF_x = 1; int16_t ddF_y = -2 * r; @@ -144,10 +160,11 @@ void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, } } -// bresenham's algorithm - thx wikpedia +// Bresenham's algorithm - thx wikpedia void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color) { + uint16_t color) +{ int16_t steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { swap(x0, y0); @@ -187,34 +204,38 @@ void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, } -// draw a rectangle -void Adafruit_GFX::drawRect(int16_t x, int16_t y, +// Draw a rectangle +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { + uint16_t color) +{ drawFastHLine(x, y, w, color); drawFastHLine(x, y+h-1, w, color); drawFastVLine(x, y, h, color); drawFastVLine(x+w-1, y, h, color); } -void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // stupidest version - update in subclasses if desired! +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) +{ + // Update in subclasses if desired! drawLine(x, y, x, y+h-1, color); } -void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // stupidest version - update in subclasses if desired! +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) +{ + // Update in subclasses if desired! drawLine(x, y, x+w-1, y, color); } -void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // stupidest version - update in subclasses if desired! +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) +{ + // Update in subclasses if desired! for (int16_t i=x; i= y1 >= y0) @@ -338,8 +360,8 @@ void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0, void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color) { - + uint16_t color) +{ int16_t i, j, byteWidth = (w + 7) / 8; for(j=0; j= _width) || // Clip right - (y >= _height) || // Clip bottom - ((x + 5 * size - 1) < 0) || // Clip left - ((y + 8 * size - 1) < 0)) // Clip top + uint16_t color, uint16_t bg, uint8_t size) +{ + if((x >= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size - 1) < 0) || // Clip left + ((y + 8 * size - 1) < 0)) // Clip top return; for (int8_t i=0; i<6; i++ ) { @@ -410,13 +432,15 @@ void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, } } -void Adafruit_GFX::setCursor(int16_t x, int16_t y) { +void Adafruit_GFX::setCursor(int16_t x, int16_t y) +{ cursor_x = x; cursor_y = y; } -void Adafruit_GFX::setTextSize(uint8_t s) { +void Adafruit_GFX::setTextSize(uint8_t s) +{ textsize = (s > 0) ? s : 1; } @@ -428,23 +452,25 @@ void Adafruit_GFX::setTextColor(uint16_t c) { // to the same as fg instead of using a flag } - void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { + void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) +{ textcolor = c; textbgcolor = b; - } +} -void Adafruit_GFX::setTextWrap(boolean w) { +void Adafruit_GFX::setTextWrap(boolean w) +{ wrap = w; } -uint8_t Adafruit_GFX::getRotation(void) { - rotation %= 4; +uint8_t Adafruit_GFX::getRotation(void) +{ return rotation; } -void Adafruit_GFX::setRotation(uint8_t x) { - x %= 4; // cant be higher than 3 - rotation = x; +void Adafruit_GFX::setRotation(uint8_t x) +{ + rotation = (x & 3); switch (x) { case 0: case 2: @@ -459,28 +485,32 @@ void Adafruit_GFX::setRotation(uint8_t x) { } } -void Adafruit_GFX::invertDisplay(boolean i) { - // do nothing, can be subclassed -} -// return the size of the display which depends on the rotation! -int16_t Adafruit_GFX::width(void) { +// return the size of the display (per current rotation) +int16_t Adafruit_GFX::width(void) +{ return _width; } -int16_t Adafruit_GFX::height(void) { +int16_t Adafruit_GFX::height(void) +{ return _height; } - - -uint16_t Adafruit_GFX::newColor(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); +void Adafruit_GFX::invertDisplay(boolean i) +{ + // Do nothing, must be subclassed if supported } -void Adafruit_GFX::background(uint8_t red, uint8_t green, uint8_t blue) { +uint16_t Adafruit_GFX::newColor(uint8_t r, uint8_t g, uint8_t b) +{ + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); +} + +void Adafruit_GFX::background(uint8_t red, uint8_t green, uint8_t blue) +{ background(newColor(red, green, blue)); } @@ -488,17 +518,20 @@ void Adafruit_GFX::background(color c) { fillScreen(c); } -void Adafruit_GFX::stroke(uint8_t red, uint8_t green, uint8_t blue) { +void Adafruit_GFX::stroke(uint8_t red, uint8_t green, uint8_t blue) +{ stroke(newColor(red, green, blue)); } -void Adafruit_GFX::stroke(color c) { +void Adafruit_GFX::stroke(color c) +{ useStroke = true; strokeColor = c; setTextColor(c); } -void Adafruit_GFX::noStroke() { +void Adafruit_GFX::noStroke() +{ useStroke = false; } @@ -506,17 +539,20 @@ void Adafruit_GFX::noFill() { useFill = false; } -void Adafruit_GFX::fill(uint8_t red, uint8_t green, uint8_t blue) { +void Adafruit_GFX::fill(uint8_t red, uint8_t green, uint8_t blue) +{ fill(newColor(red, green, blue)); } -void Adafruit_GFX::fill(color c) { +void Adafruit_GFX::fill(color c) +{ useFill = true; fillColor = c; } -void Adafruit_GFX::text(const char * text, int16_t x, int16_t y) { +void Adafruit_GFX::text(const char * text, int16_t x, int16_t y) +{ if (!useStroke) return; @@ -526,7 +562,8 @@ void Adafruit_GFX::text(const char * text, int16_t x, int16_t y) { print(text); } -void Adafruit_GFX::textWrap(const char * text, int16_t x, int16_t y) { +void Adafruit_GFX::textWrap(const char * text, int16_t x, int16_t y) +{ if (!useStroke) return; @@ -537,18 +574,21 @@ void Adafruit_GFX::textWrap(const char * text, int16_t x, int16_t y) { } -void Adafruit_GFX::textSize(uint8_t size) { +void Adafruit_GFX::textSize(uint8_t size) +{ setTextSize(size); } -void Adafruit_GFX::point(int16_t x, int16_t y) { +void Adafruit_GFX::point(int16_t x, int16_t y) +{ if (!useStroke) return; drawPixel(x, y, strokeColor); } -void Adafruit_GFX::line(int16_t x1, int16_t y1, int16_t x2, int16_t y2) { +void Adafruit_GFX::line(int16_t x1, int16_t y1, int16_t x2, int16_t y2) +{ if (!useStroke) return; @@ -569,7 +609,8 @@ void Adafruit_GFX::line(int16_t x1, int16_t y1, int16_t x2, int16_t y2) { } } -void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height) { +void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height) +{ if (useFill) { fillRect(x, y, width, height, fillColor); } @@ -578,7 +619,8 @@ void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height) { } } -void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius) { +void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius) +{ if (radius == 0) { rect(x, y, width, height); } @@ -590,7 +632,8 @@ void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height, int } } -void Adafruit_GFX::circle(int16_t x, int16_t y, int16_t r) { +void Adafruit_GFX::circle(int16_t x, int16_t y, int16_t r) +{ if (r == 0) return; @@ -602,7 +645,8 @@ void Adafruit_GFX::circle(int16_t x, int16_t y, int16_t r) { } } -void Adafruit_GFX::triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3) { +void Adafruit_GFX::triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3) +{ if (useFill) { fillTriangle(x1, y1, x2, y2, x3, y3, fillColor); } @@ -668,4 +712,4 @@ void Adafruit_GFX::image(PImage & img, uint16_t x, uint16_t y) { } -#endif \ No newline at end of file +#endif diff --git a/libraries/TFT/src/utility/Adafruit_GFX.h b/libraries/TFT/src/utility/Adafruit_GFX.h index b49aa0f33..f5f23c477 100644 --- a/libraries/TFT/src/utility/Adafruit_GFX.h +++ b/libraries/TFT/src/utility/Adafruit_GFX.h @@ -55,9 +55,9 @@ */ #if defined(__SD_H__) // Arduino SD library -# include "PImage.h" + #include "PImage.h" #else -# warning "The SD library was not found. loadImage() and image() won't be supported." + #warning "The SD library was not found. loadImage() and image() won't be supported." #endif #define swap(a, b) { int16_t t = a; a = b; b = t; } @@ -76,61 +76,68 @@ typedef uint16_t color; class Adafruit_GFX : public Print { public: - //Adafruit_GFX(); - // i have no idea why we have to formally call the constructor. kinda sux - void constructor(int16_t w, int16_t h); + Adafruit_GFX(int16_t w, int16_t h); // Constructor - // this must be defined by the subclass - virtual void drawPixel(int16_t x, int16_t y, uint16_t color); - virtual void invertDisplay(boolean i); + // This MUST be defined by the subclass + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - // these are 'generic' drawing functions, so we can share them! - virtual void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color); - virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - virtual void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color); - virtual void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color); - virtual void fillScreen(uint16_t color); + - void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); - void drawCircleHelper(int16_t x0, int16_t y0, - int16_t r, uint8_t cornername, uint16_t color); - void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color); - void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color); + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void + drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color), + drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), + drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), + drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color), + fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color), + fillScreen(uint16_t color), + invertDisplay(boolean i); - void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color); - void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color); - void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color); - void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color); +// These exist only with Adafruit_GFX (no subclass overrides) + void + drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + drawCircleHelper(int16_t x0, int16_t y0, + int16_t r, uint8_t cornername, uint16_t color), + fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + fillCircleHelper(int16_t x0, int16_t y0, int16_t r, + uint8_t cornername, int16_t delta, uint16_t color), - void drawBitmap(int16_t x, int16_t y, + drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + + drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color); - void drawChar(int16_t x, int16_t y, unsigned char c, - uint16_t color, uint16_t bg, uint8_t size); + uint16_t color), + drawChar(int16_t x, int16_t y, unsigned char c, + uint16_t color, uint16_t bg, uint8_t size), + setCursor(int16_t x, int16_t y), + setTextColor(uint16_t c), + setTextColor(uint16_t c, uint16_t bg), + setTextSize(uint8_t s), + setTextWrap(boolean w), + setRotation(uint8_t r); + #if ARDUINO >= 100 virtual size_t write(uint8_t); #else virtual void write(uint8_t); #endif - void setCursor(int16_t x, int16_t y); - void setTextColor(uint16_t c); - void setTextColor(uint16_t c, uint16_t bg); - void setTextSize(uint8_t s); - void setTextWrap(boolean w); - int16_t height(void); - int16_t width(void); + int16_t + height(void), + width(void); + - void setRotation(uint8_t r); uint8_t getRotation(void); @@ -145,45 +152,40 @@ class Adafruit_GFX : public Print { virtual uint16_t newColor(uint8_t red, uint8_t green, uint8_t blue); - // http://processing.org/reference/background_.html - void background(uint8_t red, uint8_t green, uint8_t blue); - void background(color c); + void + // http://processing.org/reference/background_.html + background(uint8_t red, uint8_t green, uint8_t blue), + background(color c), - // http://processing.org/reference/fill_.html - void fill(uint8_t red, uint8_t green, uint8_t blue); - void fill(color c); + // http://processing.org/reference/fill_.html + fill(uint8_t red, uint8_t green, uint8_t blue), + fill(color c), - // http://processing.org/reference/noFill_.html - void noFill(); + // http://processing.org/reference/noFill_.html + noFill(), - // http://processing.org/reference/stroke_.html - void stroke(uint8_t red, uint8_t green, uint8_t blue); - void stroke(color c); + // http://processing.org/reference/stroke_.html + stroke(uint8_t red, uint8_t green, uint8_t blue), + stroke(color c), - // http://processing.org/reference/noStroke_.html - void noStroke(); + // http://processing.org/reference/noStroke_.html + noStroke(), - void text (const char * text, int16_t x, int16_t y); - void textWrap(const char * text, int16_t x, int16_t y); + text(const char * text, int16_t x, int16_t y), + textWrap(const char * text, int16_t x, int16_t y), - void textSize(uint8_t size); + textSize(uint8_t size), - // similar to ellipse() in Processing, but with - // a single radius. - // http://processing.org/reference/ellipse_.html - void circle(int16_t x, int16_t y, int16_t r); - - void point(int16_t x, int16_t y); - - void line(int16_t x1, int16_t y1, int16_t x2, int16_t y2); - - void quad(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, int16_t x4, int16_t y4); - - void rect(int16_t x, int16_t y, int16_t width, int16_t height); - - void rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius); - - void triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3); + // similar to ellipse() in Processing, but with + // a single radius. + // http://processing.org/reference/ellipse_.html + circle(int16_t x, int16_t y, int16_t r), + point(int16_t x, int16_t y), + line(int16_t x1, int16_t y1, int16_t x2, int16_t y2), + quad(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, int16_t x4, int16_t y4), +rect(int16_t x, int16_t y, int16_t width, int16_t height), + rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius), + triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3); /* TODO void rectMode(RectMode mode); @@ -199,13 +201,18 @@ class Adafruit_GFX : public Print { #endif protected: - int16_t WIDTH, HEIGHT; // this is the 'raw' display w/h - never changes - int16_t _width, _height; // dependent on rotation - int16_t cursor_x, cursor_y; - uint16_t textcolor, textbgcolor; - uint8_t textsize; - uint8_t rotation; - boolean wrap; // If set, 'wrap' text at right edge of display + int16_t + WIDTH, HEIGHT; // this is the 'raw' display w/h - never changes + int16_t + _width, _height, // dependent on rotation + cursor_x, cursor_y; + uint16_t + textcolor, textbgcolor; + uint8_t + textsize, + rotation; + boolean + wrap; // If set, 'wrap' text at right edge of display /* * Processing-style graphics state @@ -362,6 +369,4 @@ PImage PImage::loadImage(const char * fileName) { #endif - - -#endif +#endif // _ADAFRUIT_GFX_H diff --git a/libraries/TFT/src/utility/Adafruit_ST7735.cpp b/libraries/TFT/src/utility/Adafruit_ST7735.cpp index ed57bf72b..fee601bcd 100755 --- a/libraries/TFT/src/utility/Adafruit_ST7735.cpp +++ b/libraries/TFT/src/utility/Adafruit_ST7735.cpp @@ -30,7 +30,8 @@ inline uint16_t swapcolor(uint16_t x) { // Constructor when using software SPI. All output pins are configurable. Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t sid, - uint8_t sclk, uint8_t rst) { + uint8_t sclk, uint8_t rst) : Adafruit_GFX(ST7735_TFTWIDTH, ST7735_TFTHEIGHT) +{ _cs = cs; _rs = rs; _sid = sid; @@ -42,7 +43,9 @@ Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t sid, // Constructor when using hardware SPI. Faster, but must use SPI pins // specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.) -Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t rst) { +Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t rst) : +Adafruit_GFX(ST7735_TFTWIDTH, ST7735_TFTHEIGHT) +{ _cs = cs; _rs = rs; _rst = rst; @@ -258,8 +261,7 @@ void Adafruit_ST7735::commandList(uint8_t *addr) { // Initialization code common to both 'B' and 'R' type displays void Adafruit_ST7735::commonInit(uint8_t *cmdList) { - constructor(ST7735_TFTWIDTH, ST7735_TFTHEIGHT); - colstart = rowstart = 0; // May be overridden in init func + colstart = rowstart = 0; // May be overridden in init func pinMode(_rs, OUTPUT); pinMode(_cs, OUTPUT); diff --git a/libraries/TFT/src/utility/Adafruit_ST7735.h b/libraries/TFT/src/utility/Adafruit_ST7735.h index a5d560ff5..fb99b645f 100755 --- a/libraries/TFT/src/utility/Adafruit_ST7735.h +++ b/libraries/TFT/src/utility/Adafruit_ST7735.h @@ -1,4 +1,4 @@ -/*************************************************** + /*************************************************** This is a library for the Adafruit 1.8" SPI display. This library works with the Adafruit 1.8" TFT Breakout w/SD card ----> http://www.adafruit.com/products/358