mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-19 13:54:23 +01:00
Merge remote-tracking branch 'arduino/ide-1.5.x' into dev-ide-1.5.x-discovery
This commit is contained in:
commit
effb59da4b
@ -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");
|
||||
|
@ -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.
|
||||
@ -217,7 +190,7 @@ public class Preferences {
|
||||
|
||||
// data model
|
||||
|
||||
static Hashtable defaults;
|
||||
static Hashtable<String, String> defaults;
|
||||
static Hashtable<String, String> table = new Hashtable<String, String>();
|
||||
static File preferencesFile;
|
||||
|
||||
@ -253,7 +226,7 @@ public class Preferences {
|
||||
}
|
||||
|
||||
// clone the hash table
|
||||
defaults = (Hashtable) table.clone();
|
||||
defaults = new Hashtable<String, String>(table);
|
||||
|
||||
// Load a prefs file if specified on the command line
|
||||
if (commandLinePrefs != null) {
|
||||
@ -294,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]);
|
||||
@ -386,7 +364,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 +658,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();
|
||||
}
|
||||
@ -725,7 +706,7 @@ public class Preferences {
|
||||
load(input, table);
|
||||
}
|
||||
|
||||
static public void load(InputStream input, Map table) throws IOException {
|
||||
static public void load(InputStream input, Map<String, String> table) throws IOException {
|
||||
String[] lines = loadStrings(input); // Reads as UTF-8
|
||||
for (String line : lines) {
|
||||
if ((line.length() == 0) ||
|
||||
@ -837,7 +818,7 @@ public class Preferences {
|
||||
}
|
||||
|
||||
static public String getDefault(String attribute) {
|
||||
return (String) defaults.get(attribute);
|
||||
return defaults.get(attribute);
|
||||
}
|
||||
|
||||
|
||||
|
@ -248,9 +248,9 @@
|
||||
</antcall>
|
||||
|
||||
<antcall target="unzip-arm-toolchain">
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.7.4-2013q2-mac.tar.gz" />
|
||||
<param name="dist_check_file" value="gcc-arm-none-eabi-4.7.4-2013q2" />
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz" />
|
||||
<param name="dist_check_file" value="g++_arm_none_eabi" />
|
||||
</antcall>
|
||||
|
||||
<delete includeEmptyDirs="true" quiet="true">
|
||||
@ -290,15 +290,20 @@
|
||||
</exec>
|
||||
|
||||
<!-- Sign app -->
|
||||
<exec executable="codesign" dir="macosx/work" failonerror="true">
|
||||
<exec executable="codesign" dir="macosx/work">
|
||||
<arg line="--keychain "${macosx-sign-keychain}" --force -s "${macosx-sign-id}" -v Arduino.app/" />
|
||||
</exec>
|
||||
|
||||
<!-- Check for successful signing -->
|
||||
<exec executable="codesign" dir="macosx/work" failonerror="true">
|
||||
<arg line="-vvvv Arduino.app/" />
|
||||
</exec>
|
||||
|
||||
<delete file="macosx/arduino-${version}-${platform}.zip" />
|
||||
|
||||
<!-- Create signed zip file -->
|
||||
<exec executable="zip" dir="macosx/work">
|
||||
<arg line="-q -r ../arduino-${version}-${platform}.zip ." />
|
||||
<arg line="-q -r ../arduino-${version}-${platform}-signed.zip ." />
|
||||
</exec>
|
||||
|
||||
<echo>
|
||||
@ -470,9 +475,9 @@
|
||||
<target name="linux32-build" depends="linux-build" description="Build linux (32-bit) version">
|
||||
<!-- Unzip ARM tools -->
|
||||
<antcall target="unzip-arm-toolchain">
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.7.4-2013q2-linux32.tar.gz" />
|
||||
<param name="dist_check_file" value="gcc-arm-none-eabi-4.7.4-2013q2" />
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz" />
|
||||
<param name="dist_check_file" value="g++_arm_none_eabi" />
|
||||
</antcall>
|
||||
|
||||
<!-- Unzip AVR tools -->
|
||||
@ -490,9 +495,9 @@
|
||||
|
||||
<!-- Unzip ARM tools -->
|
||||
<antcall target="unzip-arm-toolchain">
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.7.4-2013q2-linux64.tar.gz" />
|
||||
<param name="dist_check_file" value="gcc-arm-none-eabi-4.7.4-2013q2" />
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz" />
|
||||
<param name="dist_check_file" value="g++_arm_none_eabi" />
|
||||
</antcall>
|
||||
|
||||
<!-- Unzip AVR tools -->
|
||||
@ -536,7 +541,7 @@
|
||||
</fail>
|
||||
|
||||
<!-- Unzip toolchain to the destination folder -->
|
||||
<exec executable="tar" output="/dev/null" os="Linux">
|
||||
<exec executable="tar">
|
||||
<arg value="xfz"/>
|
||||
<arg value="${staging_folder}/dist/${dist_file}"/>
|
||||
<arg value="--directory=${staging_folder}/work/${staging_hardware_folder}/tools/"/>
|
||||
@ -688,9 +693,9 @@
|
||||
|
||||
<!-- Unzip ARM toolchain -->
|
||||
<antcall target="unzip-arm-toolchain">
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.7.4-2013q2-windows.tar.gz" />
|
||||
<param name="dist_check_file" value="gcc-arm-none-eabi-4.7.4-2013q2" />
|
||||
<param name="dist_file" value="gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz" />
|
||||
<param name="dist_url" value="http://arduino.googlecode.com/files/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz" />
|
||||
<param name="dist_check_file" value="g++_arm_none_eabi" />
|
||||
</antcall>
|
||||
|
||||
<delete includeEmptyDirs="true" quiet="true">
|
||||
|
1
build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha
vendored
Normal file
1
build/linux/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-linux32.tar.gz.sha
vendored
Normal file
@ -0,0 +1 @@
|
||||
46a93ceec28772ac19c76ffc9b285a1eac4288a3
|
@ -1 +0,0 @@
|
||||
b35a6b9b1066977509ad5dcf51936b7a6bb18c18
|
@ -1 +0,0 @@
|
||||
14afebbb1a26b799237080ec32b300a409ff99cb
|
1
build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha
vendored
Normal file
1
build/macosx/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-macos.tar.gz.sha
vendored
Normal file
@ -0,0 +1 @@
|
||||
14c554bb9aa9f0d0262a593e7452d33f4babc60d
|
@ -1 +0,0 @@
|
||||
a1326c6258f91d9b318570bc619ca8a3b799d8bc
|
@ -1,5 +1,10 @@
|
||||
|
||||
ARDUINO 1.5.3 BETA
|
||||
ARDUINO 1.5.4 BETA
|
||||
|
||||
[libraries]
|
||||
* sam: fixed wrong SPI initialization (noblepepper)
|
||||
|
||||
ARDUINO 1.5.3 BETA 2013.08.30
|
||||
|
||||
[ide]
|
||||
* Removed useless baud rates from serial monitor
|
||||
@ -7,8 +12,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
|
||||
|
||||
@ -27,7 +30,8 @@ ARDUINO 1.5.3 BETA
|
||||
* 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
|
||||
|
1
build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha
vendored
Normal file
1
build/windows/dist/gcc-arm-none-eabi-4.4.1-2010q1-188-win32.tar.gz.sha
vendored
Normal file
@ -0,0 +1 @@
|
||||
f288affa058bfdd44f8b93800fc4cb01b2ebf1e5
|
@ -1 +0,0 @@
|
||||
c41fa509205b9ced43fc221b6a0cae4223a0842d
|
@ -137,7 +137,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
|
||||
## -------------------------
|
||||
|
@ -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];
|
||||
|
@ -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);}
|
||||
|
@ -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];
|
||||
|
@ -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
|
||||
|
@ -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++
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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 <avr/pgmspace.h>
|
||||
#ifdef __AVR__
|
||||
#include <avr/pgmspace.h>
|
||||
#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<x+w; i++) {
|
||||
drawFastVLine(i, y, h, color);
|
||||
drawFastVLine(i, y, h, color);
|
||||
}
|
||||
}
|
||||
|
||||
@ -223,14 +244,15 @@ void Adafruit_GFX::fillScreen(uint16_t color) {
|
||||
fillRect(0, 0, _width, _height, color);
|
||||
}
|
||||
|
||||
// draw a rounded rectangle!
|
||||
// Draw a rounded rectangle
|
||||
void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
|
||||
int16_t h, int16_t r, uint16_t color) {
|
||||
int16_t h, int16_t r, uint16_t color)
|
||||
{
|
||||
// smarter version
|
||||
drawFastHLine(x+r , y , w-2*r, color); // Top
|
||||
drawFastHLine(x+r , y+h-1, w-2*r, color); // Bottom
|
||||
drawFastVLine( x , y+r , h-2*r, color); // Left
|
||||
drawFastVLine( x+w-1, y+r , h-2*r, color); // Right
|
||||
drawFastVLine(x , y+r , h-2*r, color); // Left
|
||||
drawFastVLine(x+w-1, y+r , h-2*r, color); // Right
|
||||
// draw four corners
|
||||
drawCircleHelper(x+r , y+r , r, 1, color);
|
||||
drawCircleHelper(x+w-r-1, y+r , r, 2, color);
|
||||
@ -238,9 +260,10 @@ void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w,
|
||||
drawCircleHelper(x+r , y+h-r-1, r, 8, color);
|
||||
}
|
||||
|
||||
// fill a rounded rectangle!
|
||||
// Fill a rounded rectangle
|
||||
void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
|
||||
int16_t h, int16_t r, uint16_t color) {
|
||||
int16_t h, int16_t r, uint16_t color)
|
||||
{
|
||||
// smarter version
|
||||
fillRect(x+r, y, w-2*r, h, color);
|
||||
|
||||
@ -249,7 +272,7 @@ void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w,
|
||||
fillCircleHelper(x+r , y+r, r, 2, h-2*r-1, color);
|
||||
}
|
||||
|
||||
// draw a triangle!
|
||||
// Draw a triangle
|
||||
void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
|
||||
int16_t x1, int16_t y1,
|
||||
int16_t x2, int16_t y2, uint16_t color) {
|
||||
@ -258,11 +281,10 @@ void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0,
|
||||
drawLine(x2, y2, x0, y0, color);
|
||||
}
|
||||
|
||||
// fill a triangle!
|
||||
// Fill a triangle
|
||||
void Adafruit_GFX::fillTriangle ( int16_t x0, int16_t y0,
|
||||
int16_t x1, int16_t y1,
|
||||
int16_t x1, int16_t y1,
|
||||
int16_t x2, int16_t y2, uint16_t color) {
|
||||
|
||||
int16_t a, b, y, last;
|
||||
|
||||
// Sort coordinates by Y order (y2 >= 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<h; j++) {
|
||||
@ -377,12 +399,12 @@ void Adafruit_GFX::write(uint8_t c) {
|
||||
|
||||
// draw a character
|
||||
void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
|
||||
uint16_t color, uint16_t bg, uint8_t size) {
|
||||
|
||||
if((x >= _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
|
||||
#endif
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user