diff --git a/locale/ID.po b/locale/ID.po index 9289e46ac8..cf0b40e0ac 100644 --- a/locale/ID.po +++ b/locale/ID.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1810,69 +1810,69 @@ msgstr "" msgid "string index out of range" msgstr "" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "" @@ -2181,7 +2181,7 @@ msgid "buffer must be a bytes-like object" msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "" @@ -2344,74 +2344,89 @@ msgstr "" msgid "Unsupported pull value." msgstr "" -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" msgstr "" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" msgstr "" -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" +#: shared-bindings/displayio/Bitmap.c:156 +msgid "pixel coordinates out of bounds" msgstr "" -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +msgid "%q should be an int" +msgstr "" + +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 msgid "Command must be an int between 0 and 255" msgstr "" -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "buffers harus mempunyai panjang yang sama" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "" + #: shared-bindings/displayio/Shape.c:92 msgid "start_x should be an int" msgstr "" @@ -2424,19 +2439,19 @@ msgstr "" msgid "position must be 2-tuple" msgstr "" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" @@ -2464,6 +2479,7 @@ msgstr "" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "" @@ -2513,19 +2529,7 @@ msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "" @@ -2574,11 +2578,6 @@ msgstr "" msgid "Stack size must be at least 256" msgstr "" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "keyword harus berupa string" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "" @@ -2697,27 +2696,28 @@ msgstr "" msgid "Only bit maps of 8 bit color or less are supported" msgstr "" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "sistem file (filesystem) bersifat Read-only" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "Baudrate tidak didukung" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "" @@ -2848,6 +2848,16 @@ msgid "" "exit safe mode.\n" msgstr "" +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "keyword harus berupa string" + +#~ msgid "All PWM peripherals are in use" +#~ msgstr "Semua perangkat PWM sedang digunakan" + +#~ msgid "Invalid UUID string length" +#~ msgstr "Panjang string UUID tidak valid" + #~ msgid "" #~ "enough power for the whole circuit and press reset (after ejecting " #~ "CIRCUITPY).\n" @@ -2855,18 +2865,12 @@ msgstr "" #~ "tegangan cukup untuk semua sirkuit dan tekan reset (setelah mencabut " #~ "CIRCUITPY).\n" -#, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Gagal untuk megalokasikan buffer RX dari %d byte" - -#~ msgid "Invalid UUID string length" -#~ msgstr "Panjang string UUID tidak valid" - #~ msgid "Invalid UUID parameter" #~ msgstr "Parameter UUID tidak valid" -#~ msgid "All PWM peripherals are in use" -#~ msgstr "Semua perangkat PWM sedang digunakan" +#, fuzzy +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Gagal untuk megalokasikan buffer RX dari %d byte" #~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" #~ msgstr "" diff --git a/locale/circuitpython.pot b/locale/circuitpython.pot index c98e927b1a..316766572b 100644 --- a/locale/circuitpython.pot +++ b/locale/circuitpython.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1777,69 +1777,69 @@ msgstr "" msgid "string index out of range" msgstr "" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "" @@ -2148,7 +2148,7 @@ msgid "buffer must be a bytes-like object" msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "" @@ -2306,74 +2306,88 @@ msgstr "" msgid "Unsupported pull value." msgstr "" -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" msgstr "" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" msgstr "" -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" +#: shared-bindings/displayio/Bitmap.c:156 +msgid "pixel coordinates out of bounds" msgstr "" -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +msgid "%q should be an int" +msgstr "" + +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 msgid "Command must be an int between 0 and 255" msgstr "" -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +msgid "%q must be >= 1" msgstr "" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "" + #: shared-bindings/displayio/Shape.c:92 msgid "start_x should be an int" msgstr "" @@ -2386,19 +2400,19 @@ msgstr "" msgid "position must be 2-tuple" msgstr "" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" @@ -2426,6 +2440,7 @@ msgstr "" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "" @@ -2475,19 +2490,7 @@ msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "" @@ -2536,10 +2539,6 @@ msgstr "" msgid "Stack size must be at least 256" msgstr "" -#: shared-bindings/terminalio/Terminal.c:68 -msgid "unicode_characters must be a string" -msgstr "" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "" @@ -2658,26 +2657,26 @@ msgstr "" msgid "Only bit maps of 8 bit color or less are supported" msgstr "" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "" +#: shared-module/displayio/Bitmap.c:118 +msgid "Read-only object" +msgstr "" + #: shared-module/displayio/Display.c:67 msgid "Unsupported display bus type" msgstr "" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "" diff --git a/locale/de_DE.po b/locale/de_DE.po index 6317fa2300..c9fe9c6917 100644 --- a/locale/de_DE.po +++ b/locale/de_DE.po @@ -7,10 +7,10 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 01:10-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-07-27 11:55-0700\n" -"Last-Translator: Pascal Deneaux\n" -"Language-Team: Sebastian Plamauer, Pascal Deneaux\n" +"Last-Translator: Sebastian Plamauer\n" +"Language-Team: \n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -69,11 +69,11 @@ msgstr "eine nicht-hex zahl wurde gefunden" #: extmod/modubinascii.c:169 msgid "incorrect padding" -msgstr "padding ist inkorrekt" +msgstr "falsches padding" #: extmod/moductypes.c:122 msgid "syntax error in uctypes descriptor" -msgstr "Syntaxfehler in uctypes Deskriptor" +msgstr "Syntaxfehler in uctypes Definition" #: extmod/moductypes.c:219 msgid "Cannot unambiguously get sizeof scalar" @@ -105,7 +105,7 @@ msgstr "Syntaxfehler in JSON" #: extmod/modure.c:161 msgid "Splitting with sub-captures" -msgstr "Splitting with sub-captures" +msgstr "Teilen mit unter-captures" #: extmod/modure.c:207 msgid "Error in regex" @@ -161,7 +161,7 @@ msgid "" "disable.\n" msgstr "" "Automatisches Neuladen ist aktiv. Speichere Dateien über USB um sie " -"auszuführen oder verbinde dich mit der REPL zum Deaktivieren.\n" +"auszuführen oder verbinde dich mit der REPL zum deaktivieren.\n" #: main.c:168 msgid "Running in safe mode! Auto-reload is off.\n" @@ -185,12 +185,12 @@ msgid "" "\n" "Code done running. Waiting for reload.\n" msgstr "" -"\n" -"Der Code wurde ausgeführt. Warte auf reload.\n" #: main.c:254 msgid "Press any key to enter the REPL. Use CTRL-D to reload." -msgstr "Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum neu laden" +msgstr "" +"Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum neu " +"laden" #: main.c:419 msgid "soft reboot\n" @@ -492,7 +492,9 @@ msgstr "Minimale PWM Frequenz ist %dHz" #: ports/esp8266/common-hal/pulseio/PWMOut.c:68 #, c-format msgid "Multiple PWM frequencies not supported. PWM already set to %dhz." -msgstr "Mehrere PWM Frequenzen werden nicht unterstützt. PWM wurde bereits auf %dHz gesetzt." +msgstr "" +"Mehrere PWM Frequenzen werden nicht unterstützt. PWM wurde bereits auf %dHz " +"gesetzt." #: ports/esp8266/common-hal/pulseio/PWMOut.c:77 ports/esp8266/machine_pwm.c:70 #, c-format @@ -509,7 +511,8 @@ msgstr "Dateisystem kann nicht wieder gemounted werden." #: ports/esp8266/common-hal/storage/__init__.c:38 msgid "Use esptool to erase flash and re-upload Python instead" -msgstr "Benutze das esptool um den flash zu löschen und Python erneut hochzuladen" +msgstr "" +"Benutze esptool um den flash zu löschen und stattdessen Python hochzuladen" #: ports/esp8266/esp_mphal.c:154 msgid "C-level assert" @@ -565,7 +568,8 @@ msgstr "len muss ein vielfaches von 4 sein" #: ports/esp8266/modesp.c:274 #, c-format msgid "memory allocation failed, allocating %u bytes for native code" -msgstr "Speicherallozierung fehlgeschlagen, alloziere %u Bytes für nativen Code" +msgstr "" +"Speicherallozierung fehlgeschlagen, alloziere %u Bytes für nativen Code" #: ports/esp8266/modesp.c:317 msgid "flash location must be below 1MByte" @@ -840,7 +844,7 @@ msgstr "Ungültige Puffergröße" #: ports/nrf/common-hal/busio/UART.c:99 msgid "Odd parity is not supported" -msgstr "Eine ungerade Parität wird nicht unterstützt" +msgstr "Ungerade Parität wird nicht unterstützt" #: ports/nrf/common-hal/busio/UART.c:335 ports/nrf/common-hal/busio/UART.c:339 #: ports/nrf/common-hal/busio/UART.c:344 ports/nrf/common-hal/busio/UART.c:349 @@ -868,12 +872,12 @@ msgstr "ffi_prep_closure_loc" #: ports/unix/modffi.c:413 msgid "Don't know how to pass object to native function" -msgstr "Ich weiß nicht, wie man das Objekt an die native Funktion übergeben kann" +msgstr "" #: ports/unix/modusocket.c:474 #, c-format msgid "[addrinfo error %d]" -msgstr "[addrinfo error %d]" +msgstr "" #: py/argcheck.c:53 msgid "function does not take keyword arguments" @@ -882,7 +886,8 @@ msgstr "Funktion akzeptiert keine Keyword-Argumente" #: py/argcheck.c:63 py/bc.c:85 py/objnamedtuple.c:108 #, c-format msgid "function takes %d positional arguments but %d were given" -msgstr "Funktion nimmt %d Argumente ohne Keyword an, aber es wurden %d angegeben" +msgstr "" +"Funktion nimmt %d Argumente ohne Keyword an, aber es wurden %d angegeben" #: py/argcheck.c:73 #, c-format @@ -912,7 +917,8 @@ msgstr "Anzahl/Type der Argumente passen nicht" #: py/argcheck.c:156 msgid "keyword argument(s) not yet implemented - use normal args instead" -msgstr "Keyword-Argument(e) noch nicht implementiert - verwenden Sie stattdessen " +msgstr "" +"Keyword-Argument(e) noch nicht implementiert - verwenden Sie stattdessen " "normale Argumente" #: py/bc.c:88 py/objnamedtuple.c:112 @@ -950,11 +956,11 @@ msgstr "Funktion vermisst Keyword-only-Argument" #: py/binary.c:112 msgid "bad typecode" -msgstr "schlechter typecode" +msgstr "" #: py/builtinevex.c:99 msgid "bad compile mode" -msgstr "schlechter compile mode" +msgstr "" #: py/builtinhelp.c:137 msgid "Plus any modules on the filesystem\n" @@ -1062,15 +1068,15 @@ msgstr "mehrere **x sind nicht gestattet" #: py/compile.c:2271 msgid "LHS of keyword arg must be an id" -msgstr "LHS of keyword arg must be an id" +msgstr "" #: py/compile.c:2287 msgid "non-keyword arg after */**" -msgstr "non-keyword arg after */**" +msgstr "" #: py/compile.c:2291 msgid "non-keyword arg after keyword arg" -msgstr "non-keyword arg after keyword arg" +msgstr "" #: py/compile.c:2463 py/compile.c:2473 py/compile.c:2712 py/compile.c:2742 #: py/parse.c:1176 @@ -1148,56 +1154,56 @@ msgstr "" #: py/emitinlinethumb.c:188 py/emitinlinethumb.c:230 #, c-format msgid "'%s' expects at most r%d" -msgstr "'%s' erwartet höchstens r%d" +msgstr "" #: py/emitinlinethumb.c:197 py/emitinlinextensa.c:162 #, c-format msgid "'%s' expects a register" -msgstr "'%s' erwartet ein Register" +msgstr "" #: py/emitinlinethumb.c:211 #, c-format msgid "'%s' expects a special register" -msgstr "'%s' erwartet ein Spezialregister" +msgstr "" #: py/emitinlinethumb.c:239 #, c-format msgid "'%s' expects an FPU register" -msgstr "'%s' erwartet ein FPU-Register" +msgstr "" #: py/emitinlinethumb.c:292 #, c-format msgid "'%s' expects {r0, r1, ...}" -msgstr "'%s' erwartet {r0, r1, ...}" +msgstr "" #: py/emitinlinethumb.c:299 py/emitinlinextensa.c:169 #, c-format msgid "'%s' expects an integer" -msgstr "'%s' erwartet ein Integer" +msgstr "" #: py/emitinlinethumb.c:304 #, c-format msgid "'%s' integer 0x%x does not fit in mask 0x%x" -msgstr "'%s' Integer 0x%x passt nicht in Maske 0x%x" +msgstr "" #: py/emitinlinethumb.c:328 #, c-format msgid "'%s' expects an address of the form [a, b]" -msgstr "'%s' erwartet eine Adresse in der Form [a, b]" +msgstr "" #: py/emitinlinethumb.c:334 py/emitinlinextensa.c:182 #, c-format msgid "'%s' expects a label" -msgstr "'%s' erwartet ein Label" +msgstr "" #: py/emitinlinethumb.c:345 py/emitinlinextensa.c:193 msgid "label '%q' not defined" -msgstr "Label '%q' nicht definiert" +msgstr "" #: py/emitinlinethumb.c:806 #, c-format msgid "unsupported Thumb instruction '%s' with %d arguments" -msgstr "nicht unterstützter Thumb-Befehl '%s' mit %d Argumenten" +msgstr "" #: py/emitinlinethumb.c:810 msgid "branch not in range" @@ -1205,11 +1211,11 @@ msgstr "Zweig ist außerhalb der Reichweite" #: py/emitinlinextensa.c:86 msgid "can only have up to 4 parameters to Xtensa assembly" -msgstr "kann nur bis zu 4 Parameter für die Xtensa assembly haben" +msgstr "" #: py/emitinlinextensa.c:91 py/emitinlinextensa.c:96 msgid "parameters must be registers in sequence a2 to a5" -msgstr "Die Parameter müssen Register der Reihenfolge a2 bis a5 sein" +msgstr "" #: py/emitinlinextensa.c:174 #, c-format @@ -1263,19 +1269,19 @@ msgstr "" #: py/emitnative.c:1540 msgid "can't implicitly convert '%q' to 'bool'" -msgstr "Kann '%q' nicht implizit nach 'bool' konvertieren" +msgstr "" #: py/emitnative.c:1774 msgid "unary op %q not implemented" -msgstr "Der unäre Operator %q ist nicht implementiert" +msgstr "" #: py/emitnative.c:1930 msgid "binary op %q not implemented" -msgstr "Der binäre Operator %q ist nicht implementiert" +msgstr "" #: py/emitnative.c:1951 msgid "can't do binary op between '%q' and '%q'" -msgstr "Eine binäre Operation zwischen '%q' und '%q' ist nicht möglich" +msgstr "" #: py/emitnative.c:2126 msgid "casting" @@ -1299,51 +1305,51 @@ msgstr "" #: py/modbuiltins.c:162 msgid "chr() arg not in range(0x110000)" -msgstr "chr() arg ist nicht in range(0x110000)" +msgstr "" #: py/modbuiltins.c:171 msgid "chr() arg not in range(256)" -msgstr "chr() arg ist nicht in range(256)" +msgstr "" #: py/modbuiltins.c:285 msgid "arg is an empty sequence" -msgstr "arg ist eine leere Sequenz" +msgstr "" #: py/modbuiltins.c:350 msgid "ord expects a character" -msgstr "ord erwartet ein Zeichen" +msgstr "" #: py/modbuiltins.c:353 #, c-format msgid "ord() expected a character, but string of length %d found" -msgstr "ord() erwartet ein Zeichen aber es wurde eine Zeichenfolge mit Länge %d gefunden" +msgstr "" #: py/modbuiltins.c:363 msgid "3-arg pow() not supported" -msgstr "3-arg pow() wird nicht unterstützt" +msgstr "" #: py/modbuiltins.c:517 msgid "must use keyword argument for key function" -msgstr "muss Schlüsselwortargument für key function verwenden" +msgstr "" #: py/modmath.c:41 shared-bindings/math/__init__.c:53 msgid "math domain error" -msgstr "math domain error" +msgstr "" #: py/modmath.c:196 py/objfloat.c:270 py/objint_longlong.c:222 #: py/objint_mpz.c:230 py/runtime.c:619 shared-bindings/math/__init__.c:346 msgid "division by zero" -msgstr "Division durch Null" +msgstr "" #: py/modmicropython.c:155 msgid "schedule stack full" -msgstr "Der schedule stack ist voll" +msgstr "" #: py/modstruct.c:148 py/modstruct.c:156 py/modstruct.c:244 py/modstruct.c:254 #: shared-bindings/struct/__init__.c:102 shared-bindings/struct/__init__.c:161 #: shared-module/struct/__init__.c:128 shared-module/struct/__init__.c:183 msgid "buffer too small" -msgstr "Der Puffer ist zu klein" +msgstr "Puffer zu klein" #: py/modthread.c:240 msgid "expecting a dict for keyword args" @@ -1367,7 +1373,7 @@ msgstr "Datei existiert" #: py/moduerrno.c:152 msgid "Unsupported operation" -msgstr "Nicht unterstützte Operation" +msgstr "Nicht unterstützter Vorgang" #: py/moduerrno.c:153 msgid "Invalid argument" @@ -1375,7 +1381,7 @@ msgstr "Ungültiges Argument" #: py/moduerrno.c:154 msgid "No space left on device" -msgstr "Kein Speicherplatz auf Gerät" +msgstr "" #: py/obj.c:92 msgid "Traceback (most recent call last):\n" @@ -1391,7 +1397,7 @@ msgstr " Datei \"%q\"" #: py/obj.c:102 msgid ", in %q\n" -msgstr ", in %q\n" +msgstr "" #: py/obj.c:259 msgid "can't convert to int" @@ -1553,24 +1559,24 @@ msgstr "" #: py/objint.c:144 msgid "can't convert inf to int" -msgstr "kann inf nicht nach int konvertieren" +msgstr "" #: py/objint.c:146 msgid "can't convert NaN to int" -msgstr "kann NaN nicht nach int konvertieren" +msgstr "" #: py/objint.c:163 msgid "float too big" -msgstr "float zu groß" +msgstr "" #: py/objint.c:328 msgid "long int not supported in this build" -msgstr "long int wird in diesem Build nicht unterstützt" +msgstr "" #: py/objint.c:334 py/objint.c:340 py/objint.c:350 py/objint.c:358 #: py/sequence.c:41 msgid "small int overflow" -msgstr "small int Überlauf" +msgstr "" #: py/objint_longlong.c:189 py/objint_mpz.c:283 py/runtime.c:486 msgid "negative power with no float support" @@ -1789,69 +1795,69 @@ msgstr "" msgid "string index out of range" msgstr "" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "" @@ -1973,16 +1979,16 @@ msgstr "'%s' Objekt nicht iterierbar" #: py/runtime.c:1260 py/runtime.c:1296 msgid "object not an iterator" -msgstr "Objekt ist kein Iterator" +msgstr "" #: py/runtime.c:1262 py/runtime.c:1298 #, c-format msgid "'%s' object is not an iterator" -msgstr "'%s' Objekt ist kein Iterator" +msgstr "" #: py/runtime.c:1401 msgid "exceptions must derive from BaseException" -msgstr "Exceptions müssen von BaseException abgeleitet sein" +msgstr "" #: py/runtime.c:1430 msgid "cannot import name %q" @@ -2003,23 +2009,23 @@ msgstr "maximale Rekursionstiefe überschritten" #: py/sequence.c:273 msgid "object not in sequence" -msgstr "Objekt ist nicht in sequence" +msgstr "" #: py/stream.c:96 msgid "stream operation not supported" -msgstr "stream operation ist nicht unterstützt" +msgstr "" #: py/stream.c:254 msgid "string not supported; use bytes or bytearray" -msgstr "Zeichenfolgen werden nicht unterstützt; Verwenden Sie bytes oder bytearray" +msgstr "" #: py/stream.c:289 msgid "length argument not allowed for this type" -msgstr "Für diesen Typ ist length nicht zulässig" +msgstr "" #: py/vm.c:255 msgid "local variable referenced before assignment" -msgstr "Es wurde versucht auf eine Variable zuzugreifen, die es (noch) nicht gibt. Variablen immer zuerst Zuweisen!" +msgstr "" #: py/vm.c:1142 msgid "no active exception to reraise" @@ -2159,16 +2165,16 @@ msgstr "Es müssen 8 oder 16 bits_per_sample sein" msgid "" "sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or " "'B'" -msgstr "sample_source buffer muss ein Bytearray oder ein Array vom Typ 'h', 'H', 'b' oder 'B' sein" +msgstr "" #: shared-bindings/audioio/RawSample.c:101 msgid "buffer must be a bytes-like object" -msgstr "Puffer muss ein bytes-artiges Objekt sein" +msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" -msgstr "Die Datei muss eine im Byte-Modus geöffnete Datei sein" +msgstr "" #: shared-bindings/bitbangio/I2C.c:109 shared-bindings/bitbangio/SPI.c:119 #: shared-bindings/busio/SPI.c:130 @@ -2268,15 +2274,15 @@ msgstr "" #: shared-bindings/bleio/UUID.c:66 msgid "UUID integer value not in range 0 to 0xffff" -msgstr "UUID-Integer nicht im Bereich 0 bis 0xffff" +msgstr "" #: shared-bindings/bleio/UUID.c:91 msgid "UUID string not 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'" -msgstr "UUID Zeichenfolge ist nicht 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'" +msgstr "" #: shared-bindings/bleio/UUID.c:103 msgid "UUID value is not str, int or byte buffer" -msgstr "Der UUID-Wert ist kein str-, int- oder Byte-Puffer" +msgstr "" #: shared-bindings/bleio/UUID.c:107 msgid "Byte buffer must be 16 bytes." @@ -2284,7 +2290,7 @@ msgstr "Der Puffer muss 16 Bytes lang sein" #: shared-bindings/bleio/UUID.c:151 msgid "not a 128-bit UUID" -msgstr "keine 128-bit UUID" +msgstr "" #: shared-bindings/busio/I2C.c:117 msgid "Function requires lock." @@ -2292,11 +2298,11 @@ msgstr "Die Funktion erwartet, dass der 'lock'-Befehl zuvor ausgeführt wurde" #: shared-bindings/busio/UART.c:103 msgid "bits must be 7, 8 or 9" -msgstr "bits muss 7, 8 oder 9 sein" +msgstr "" #: shared-bindings/busio/UART.c:115 msgid "stop must be 1 or 2" -msgstr "stop muss 1 oder 2 sein" +msgstr "" #: shared-bindings/busio/UART.c:120 msgid "timeout >100 (units are now seconds, not msecs)" @@ -2324,74 +2330,89 @@ msgstr "" msgid "Unsupported pull value." msgstr "" -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" msgstr "" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" msgstr "" -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" +#: shared-bindings/displayio/Bitmap.c:156 +msgid "pixel coordinates out of bounds" msgstr "" -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +msgid "%q should be an int" +msgstr "" + +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 msgid "Command must be an int between 0 and 255" msgstr "" -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "Puffergröße muss >= 1 sein" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "" + #: shared-bindings/displayio/Shape.c:92 msgid "start_x should be an int" msgstr "" @@ -2404,25 +2425,25 @@ msgstr "" msgid "position must be 2-tuple" msgstr "" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "Nicht unterstützter Bitmap-Typ" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" #: shared-bindings/gamepad/GamePad.c:100 msgid "too many arguments" -msgstr "zu viele Argumente" +msgstr "" #: shared-bindings/gamepad/GamePad.c:104 msgid "expected a DigitalInOut" @@ -2430,84 +2451,73 @@ msgstr "" #: shared-bindings/i2cslave/I2CSlave.c:95 msgid "can't convert address to int" -msgstr "kann Adresse nicht in int konvertieren" +msgstr "" #: shared-bindings/i2cslave/I2CSlave.c:98 msgid "address out of bounds" -msgstr "Adresse außerhalb der Grenzen" +msgstr "" #: shared-bindings/i2cslave/I2CSlave.c:104 msgid "addresses is empty" -msgstr "adresses ist leer" +msgstr "" #: shared-bindings/microcontroller/Pin.c:89 #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" -msgstr "Erwartet ein(e) %q" +msgstr "" #: shared-bindings/microcontroller/Pin.c:100 msgid "%q in use" -msgstr "%q in Benutzung" +msgstr "" #: shared-bindings/microcontroller/__init__.c:126 msgid "Invalid run mode." -msgstr "Ungültiger Ausführungsmodus" +msgstr "" #: shared-bindings/multiterminal/__init__.c:68 msgid "Stream missing readinto() or write() method." -msgstr "Stream fehlt readinto() oder write() Methode." +msgstr "" #: shared-bindings/nvm/ByteArray.c:99 msgid "Slice and value different lengths." -msgstr "Slice und Wert (value) haben unterschiedliche Längen." +msgstr "" #: shared-bindings/nvm/ByteArray.c:104 msgid "Array values should be single bytes." -msgstr "Array-Werte sollten aus Einzelbytes bestehen." +msgstr "" #: shared-bindings/nvm/ByteArray.c:111 shared-bindings/nvm/ByteArray.c:141 msgid "Unable to write to nvm." -msgstr "Schreiben in nvm nicht möglich." +msgstr "" #: shared-bindings/nvm/ByteArray.c:137 msgid "Bytes must be between 0 and 255." -msgstr "Ein Bytes kann nur Werte zwischen 0 und 255 annehmen." +msgstr "" #: shared-bindings/os/__init__.c:200 msgid "No hardware random available" -msgstr "Kein hardware random verfügbar" +msgstr "" #: shared-bindings/pulseio/PWMOut.c:117 msgid "All timers for this pin are in use" -msgstr "Alle timer für diesen Pin werden bereits benutzt" +msgstr "Alle timer für diesen Pin werden benutzt" #: shared-bindings/pulseio/PWMOut.c:171 msgid "" "PWM duty_cycle must be between 0 and 65535 inclusive (16 bit resolution)" -msgstr "PWM duty_cycle muss zwischen 0 und 65535 (16 Bit Auflösung) liegen" +msgstr "" #: shared-bindings/pulseio/PWMOut.c:202 msgid "" "PWM frequency not writable when variable_frequency is False on construction." -msgstr "Die PWM-Frequenz ist nicht schreibbar wenn variable_Frequenz = False." +msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "Kann Werte nicht löschen" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "Slices werden nicht unterstützt" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "index muss ein int sein" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" -msgstr "Nur lesen möglich, da Schreibgeschützt" +msgstr "" #: shared-bindings/pulseio/PulseOut.c:135 msgid "Array must contain halfwords (type 'H')" @@ -2515,28 +2525,28 @@ msgstr "" #: shared-bindings/random/__init__.c:92 shared-bindings/random/__init__.c:100 msgid "stop not reachable from start" -msgstr "stop ist von start aus nicht erreichbar" +msgstr "" #: shared-bindings/random/__init__.c:111 msgid "step must be non-zero" -msgstr "Schritt (step) darf nicht Null sein" +msgstr "" #: shared-bindings/random/__init__.c:114 msgid "invalid step" -msgstr "ungültiger Schritt (step)" +msgstr "" #: shared-bindings/random/__init__.c:146 msgid "empty sequence" -msgstr "leere Sequenz" +msgstr "" #: shared-bindings/rtc/RTC.c:40 shared-bindings/rtc/RTC.c:44 #: shared-bindings/time/__init__.c:190 msgid "RTC is not supported on this board" -msgstr "Eine RTC wird auf diesem Board nicht unterstützt" +msgstr "" #: shared-bindings/rtc/RTC.c:52 msgid "RTC calibration is not supported on this board" -msgstr "Die RTC-Kalibrierung wird auf diesem Board nicht unterstützt" +msgstr "" #: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81 msgid "no available NIC" @@ -2544,20 +2554,15 @@ msgstr "" #: shared-bindings/storage/__init__.c:77 msgid "filesystem must provide mount method" -msgstr "Das Dateisystem muss eine Mount-Methode bereitstellen" +msgstr "" #: shared-bindings/supervisor/__init__.c:93 msgid "Brightness must be between 0 and 255" -msgstr "Die Helligkeit muss zwischen 0 und 255 liegen" +msgstr "" #: shared-bindings/supervisor/__init__.c:119 msgid "Stack size must be at least 256" -msgstr "Die Stackgröße sollte mindestens 256 sein" - -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "unicode_characters muss eine Zeichenfolge sein" +msgstr "" #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" @@ -2585,17 +2590,17 @@ msgstr "" #: shared-bindings/touchio/TouchIn.c:173 msgid "threshold must be in the range 0-65536" -msgstr "threshold muss im Intervall 0-65536 liegen" +msgstr "" #: shared-bindings/util.c:38 msgid "" "Object has been deinitialized and can no longer be used. Create a new object." -msgstr "Objekt wurde deinitialisiert und kann nicht mehr verwendet werden. Erstelle ein neues Objekt." +msgstr "" #: shared-module/_pixelbuf/PixelBuf.c:69 #, c-format msgid "Expected tuple of length %d, got %d" -msgstr "Habe ein Tupel der Länge %d erwartet aber %d erhalten" +msgstr "" #: shared-module/audioio/Mixer.c:47 shared-module/audioio/WaveFile.c:117 msgid "Couldn't allocate first buffer" @@ -2677,26 +2682,27 @@ msgstr "" msgid "Only bit maps of 8 bit color or less are supported" msgstr "" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Schreibgeschützte Dateisystem" + #: shared-module/displayio/Display.c:67 msgid "Unsupported display bus type" msgstr "Nicht unterstützter display bus type" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "Ungültige BMP-Datei" @@ -2738,12 +2744,12 @@ msgstr "" #: shared-module/struct/__init__.c:179 msgid "buffer size must match format" -msgstr "Die Puffergröße muss zum Format passen" +msgstr "Buffergröße muss zum Format passen" #: shared-module/usb_hid/Device.c:45 #, c-format msgid "Buffer incorrect size. Should be %d bytes." -msgstr "Der Puffergröße ist inkorrekt. Sie sollte %d bytes haben." +msgstr "Buffergröße falsch, sollte %d bytes sein." #: shared-module/usb_hid/Device.c:53 msgid "USB Busy" @@ -2837,3 +2843,14 @@ msgid "" msgstr "" "Die Reset-Taste wurde beim Booten von CircuitPython gedrückt. Drücke sie " "erneut um den abgesicherten Modus zu verlassen. \n" + +#, fuzzy +#~ msgid "Group must have %q at least 1" +#~ msgstr "Der Puffer muss eine Mindestenslänge von 1 haben" + +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "name muss ein String sein" + +#~ msgid "All PWM peripherals are in use" +#~ msgstr "Alle PWM-Peripheriegeräte werden verwendet" diff --git a/locale/en_US.po b/locale/en_US.po index 667b7d5ec2..54b8577c6b 100644 --- a/locale/en_US.po +++ b/locale/en_US.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 01:10-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-07-27 11:55-0700\n" "Last-Translator: \n" "Language-Team: \n" @@ -1777,69 +1777,69 @@ msgstr "" msgid "string index out of range" msgstr "" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "" @@ -2148,7 +2148,7 @@ msgid "buffer must be a bytes-like object" msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "" @@ -2306,74 +2306,88 @@ msgstr "" msgid "Unsupported pull value." msgstr "" -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" msgstr "" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" msgstr "" -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" +#: shared-bindings/displayio/Bitmap.c:156 +msgid "pixel coordinates out of bounds" msgstr "" -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +msgid "%q should be an int" +msgstr "" + +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 msgid "Command must be an int between 0 and 255" msgstr "" -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +msgid "%q must be >= 1" msgstr "" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "" + #: shared-bindings/displayio/Shape.c:92 msgid "start_x should be an int" msgstr "" @@ -2386,19 +2400,19 @@ msgstr "" msgid "position must be 2-tuple" msgstr "" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" @@ -2426,6 +2440,7 @@ msgstr "" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "" @@ -2475,19 +2490,7 @@ msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "" @@ -2536,10 +2539,6 @@ msgstr "" msgid "Stack size must be at least 256" msgstr "" -#: shared-bindings/terminalio/Terminal.c:68 -msgid "unicode_characters must be a string" -msgstr "" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "" @@ -2658,26 +2657,26 @@ msgstr "" msgid "Only bit maps of 8 bit color or less are supported" msgstr "" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "" +#: shared-module/displayio/Bitmap.c:118 +msgid "Read-only object" +msgstr "" + #: shared-module/displayio/Display.c:67 msgid "Unsupported display bus type" msgstr "" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "" diff --git a/locale/es.po b/locale/es.po index 9d22134dda..c911d85b5c 100644 --- a/locale/es.po +++ b/locale/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-08-24 22:56-0500\n" "Last-Translator: \n" "Language-Team: \n" @@ -1820,69 +1820,69 @@ msgstr "índices de string deben ser enteros, no %s" msgid "string index out of range" msgstr "string index fuera de rango" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "__init__() deberia devolver None" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "__init__() deberia devolver None, no '%s'" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "atributo no legible" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "objeto no puede ser llamado" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "objeto '%s' no puede ser llamado" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "type acepta 1 o 3 argumentos" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "no se puede crear instancia" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "no se pueden crear '%q' instancias" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "no se puede agregar un método a una clase ya subclasificada" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "type no es un tipo de base aceptable" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "type '%q' no es un tipo de base aceptable" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "herencia multiple no soportada" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "primer argumento para super() debe ser de tipo" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 debe ser una clase o tuple de clases" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "issubclass() arg 1 debe ser una clase" @@ -2200,7 +2200,7 @@ msgid "buffer must be a bytes-like object" msgstr "buffer debe de ser un objeto bytes-like" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "el archivo deberia ser una archivo abierto en modo byte" @@ -2365,75 +2365,92 @@ msgstr "Pull no se usa cuando la dirección es output." msgid "Unsupported pull value." msgstr "valor pull no soportado." -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" +msgstr "No se puede eliminar valores" + +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" +msgstr "" + +#: shared-bindings/displayio/Bitmap.c:156 +#, fuzzy +msgid "pixel coordinates out of bounds" +msgstr "address fuera de límites" + +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +#, fuzzy +msgid "%q should be an int" msgstr "y deberia ser un int" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "row buffer deberia ser un bytearray o array de tipo 'b' o 'B'" - -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" -msgstr "row data debe ser un buffer" - -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "color deberia ser un int" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 #, fuzzy msgid "Command must be an int between 0 and 255" msgstr "Bytes debe estar entre 0 y 255." -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "Group debe tener size de minimo 1" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "los buffers deben de tener la misma longitud" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "color buffer deberia ser un bytearray o array de tipo 'b' o 'B'" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "color debe estar entre 0x000000 y 0xffffff" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "color buffer deber ser un buffer o un int" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "palette_index deberia ser un int" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "y deberia ser un int" + #: shared-bindings/displayio/Shape.c:92 #, fuzzy msgid "start_x should be an int" @@ -2448,19 +2465,19 @@ msgstr "y deberia ser un int" msgid "position must be 2-tuple" msgstr "posición debe ser 2-tuple" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "tipo de bitmap no soportado" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "pixel_shader debe ser displayio.Palette o displayio.ColorConverter" @@ -2488,6 +2505,7 @@ msgstr "addresses esta vacío" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "Se espera un %q" @@ -2537,19 +2555,7 @@ msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "No se puede eliminar valores" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "indice debe ser int" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "Solo-lectura" @@ -2598,11 +2604,6 @@ msgstr "Brightness debe estar entro 0 y 255" msgid "Stack size must be at least 256" msgstr "" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "palabras clave deben ser strings" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "la longitud de sleep no puede ser negativa" @@ -2723,27 +2724,28 @@ msgstr "No se puede transferir sin pines MOSI y MISO." msgid "Only bit maps of 8 bit color or less are supported" msgstr "Solo se admiten bit maps de color de 8 bits o menos" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "la fila debe estar empacada y la palabra alineada" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Solo-lectura" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "tipo de bitmap no soportado" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "Group lleno" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "Group vacío" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "Archivo BMP inválido" @@ -2884,35 +2886,59 @@ msgstr "" "El botón reset fue presionado mientras arrancaba CircuitPython. Presiona " "otra vez para salir del modo seguro.\n" +#, fuzzy +#~ msgid "Group must have %q at least 1" +#~ msgstr "Group debe tener size de minimo 1" + +#~ msgid "Baud rate too high for this SPI peripheral" +#~ msgstr "Baud rate demasiado alto para este periférico SPI" + #~ msgid "Invalid UUID parameter" #~ msgstr "Parámetro UUID inválido" +#~ msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#~ msgstr "row buffer deberia ser un bytearray o array de tipo 'b' o 'B'" + +#~ msgid "row data must be a buffer" +#~ msgstr "row data debe ser un buffer" + +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "palabras clave deben ser strings" + +#~ msgid "index must be int" +#~ msgstr "indice debe ser int" + #~ msgid "Can not query for the device address." #~ msgstr "No se puede consultar la dirección del dispositivo." #~ msgid "All PWM peripherals are in use" #~ msgstr "Todos los periféricos PWM en uso" -#~ msgid "displayio is a work in progress" -#~ msgstr "displayio todavia esta en desarrollo" +#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" +#~ msgstr "" +#~ "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n" -#~ msgid "Cannot set PPCP parameters." -#~ msgstr "No se pueden establecer los parámetros PPCP." +#~ msgid "Group empty" +#~ msgstr "Group vacío" -#~ msgid "Invalid UUID string length" -#~ msgstr "Longitud de string UUID inválida" - -#~ msgid "Baud rate too high for this SPI peripheral" -#~ msgstr "Baud rate demasiado alto para este periférico SPI" +#~ msgid "Wrong address length" +#~ msgstr "Longitud de address erronea" #~ msgid "Can encode UUID into the advertisement packet." #~ msgstr "Se puede codificar el UUID en el paquete de anuncio." -#~ msgid "Cannot apply GAP parameters." -#~ msgstr "No se pueden aplicar los parámetros GAP." +#~ msgid "Invalid Service type" +#~ msgstr "Tipo de Servicio inválido" -#~ msgid "Wrong address length" -#~ msgstr "Longitud de address erronea" +#~ msgid "Invalid UUID string length" +#~ msgstr "Longitud de string UUID inválida" + +#~ msgid "Can not add Service." +#~ msgstr "No se puede agregar el Servicio." + +#~ msgid "displayio is a work in progress" +#~ msgstr "displayio todavia esta en desarrollo" #~ msgid "" #~ "enough power for the whole circuit and press reset (after ejecting " @@ -2921,6 +2947,25 @@ msgstr "" #~ "suficiente poder para todo el circuito y presiona reset (después de " #~ "expulsar CIRCUITPY).\n" +#, fuzzy +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Falló la asignación del buffer RX de %d bytes" + +#~ msgid "Can not encode UUID, to check length." +#~ msgstr "No se puede codificar el UUID, para revisar la longitud." + +#~ msgid "Wrong number of bytes provided" +#~ msgstr "Numero erroneo de bytes dados" + +#~ msgid "Cannot apply GAP parameters." +#~ msgstr "No se pueden aplicar los parámetros GAP." + +#~ msgid "Can not apply device name in the stack." +#~ msgstr "No se puede aplicar el nombre del dispositivo en el stack." + +#~ msgid "Cannot set PPCP parameters." +#~ msgstr "No se pueden establecer los parámetros PPCP." + #, fuzzy #~ msgid "" #~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" @@ -2928,28 +2973,5 @@ msgstr "" #~ "Por favor registra un issue en la siguiente URL con el contenidos de tu " #~ "unidad de almacenamiento CIRCUITPY:\n" -#~ msgid "Can not apply device name in the stack." -#~ msgstr "No se puede aplicar el nombre del dispositivo en el stack." - -#, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Falló la asignación del buffer RX de %d bytes" - -#~ msgid "Wrong number of bytes provided" -#~ msgstr "Numero erroneo de bytes dados" - -#~ msgid "Can not add Service." -#~ msgstr "No se puede agregar el Servicio." - #~ msgid "Can not apply advertisement data. status: 0x%02x" #~ msgstr "No se puede aplicar los datos de anuncio. status: 0x%02x" - -#~ msgid "Invalid Service type" -#~ msgstr "Tipo de Servicio inválido" - -#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" -#~ msgstr "" -#~ "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n" - -#~ msgid "Can not encode UUID, to check length." -#~ msgstr "No se puede codificar el UUID, para revisar la longitud." diff --git a/locale/fil.po b/locale/fil.po index 9834092fd2..187b35eb58 100644 --- a/locale/fil.po +++ b/locale/fil.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-12-20 22:15-0800\n" "Last-Translator: Timothy \n" "Language-Team: fil\n" @@ -1821,70 +1821,70 @@ msgstr "ang indeks ng string ay dapat na integer, hindi %s" msgid "string index out of range" msgstr "indeks ng string wala sa sakop" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "__init __ () dapat magbalik na None" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "__init__() dapat magbalink na None, hindi '%s'" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "hindi mabasa ang attribute" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "hindi matatawag ang object" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "'%s' object hindi matatawag" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "type kumuhuha ng 1 o 3 arguments" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "hindi magawa ang instance" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "hindi magawa '%q' instances" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" "hindi madagdag ang isang espesyal na method sa isang na i-subclass na class" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "hindi puede ang type para sa base type" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "hindi maari ang type na '%q' para sa base type" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "maraming inhertance hindi sinusuportahan" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "maraming bases ay may instance lay-out conflict" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "unang argument ng super() ay dapat type" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "issubclass() arg 2 ay dapat na class o tuple ng classes" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "issubclass() arg 1 ay dapat na class" @@ -2205,7 +2205,7 @@ msgid "buffer must be a bytes-like object" msgstr "buffer ay dapat bytes-like object" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "file ay dapat buksan sa byte mode" @@ -2370,75 +2370,92 @@ msgstr "Pull hindi ginagamit kapag ang direksyon ay output." msgid "Unsupported pull value." msgstr "Hindi suportado ang pull value." -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" +msgstr "Hindi mabura ang values" + +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" +msgstr "Hindi suportado ang Slices" + +#: shared-bindings/displayio/Bitmap.c:156 +#, fuzzy +msgid "pixel coordinates out of bounds" +msgstr "wala sa sakop ang address" + +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +#, fuzzy +msgid "%q should be an int" msgstr "y ay dapat int" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "ang row buffer ay dapat bytearray o array na type ‘b’ or ‘B’" - -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" -msgstr "row data ay dapat na buffer" - -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "color ay dapat na int" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 #, fuzzy msgid "Command must be an int between 0 and 255" msgstr "Sa gitna ng 0 o 255 dapat ang bytes." -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "Group dapat ay hindi baba sa 1 na haba" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "aarehas na haba dapat ang buffer slices" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "ang color buffer ay dapat bytearray o array na type ‘b’ or ‘B’" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "color buffer ay dapat na 3 bytes (RGB) o 4 bytes (RGB + pad byte)" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "color ay dapat mula sa 0x000000 hangang 0xffffff" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "color buffer ay dapat buffer or int" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "palette_index ay dapat na int" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "y ay dapat int" + #: shared-bindings/displayio/Shape.c:92 #, fuzzy msgid "start_x should be an int" @@ -2453,19 +2470,19 @@ msgstr "y ay dapat int" msgid "position must be 2-tuple" msgstr "position ay dapat 2-tuple" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "Hindi supportadong tipo ng bitmap" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "pixel_shader ay dapat displayio.Palette o displayio.ColorConverter" @@ -2493,6 +2510,7 @@ msgstr "walang laman ang address" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "Umasa ng %q" @@ -2543,19 +2561,7 @@ msgid "" msgstr "" "PWM frequency hindi writable kapag variable_frequency ay False sa pag buo." -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "Hindi mabura ang values" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "Hindi suportado ang Slices" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "index ay dapat int" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "Basahin-lamang" @@ -2604,11 +2610,6 @@ msgstr "Ang liwanag ay dapat sa gitna ng 0 o 255" msgid "Stack size must be at least 256" msgstr "Ang laki ng stack ay dapat na hindi bababa sa 256" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "ang keywords dapat strings" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "sleep length ay dapat hindi negatibo" @@ -2729,27 +2730,28 @@ msgstr "Hindi maaaring ilipat kapag walang MOSI at MISO pin." msgid "Only bit maps of 8 bit color or less are supported" msgstr "Tanging bit maps na may 8 bit color o mas mababa ang supportado" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "row ay dapat packed at ang word nakahanay" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Basahin-lamang" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "Hindi supportadong tipo ng bitmap" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "Puno ang group" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "Walang laman ang group" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "Mali ang BMP file" @@ -2890,36 +2892,60 @@ msgstr "" "Ang reset button ay pinindot habang nag boot ang CircuitPython. Pindutin " "ulit para lumabas sa safe mode.\n" +#, fuzzy +#~ msgid "Group must have %q at least 1" +#~ msgstr "Group dapat ay hindi baba sa 1 na haba" + +#, fuzzy +#~ msgid "palette must be displayio.Palette" +#~ msgstr "ang palette ay dapat 32 bytes ang haba" + #~ msgid "Invalid UUID parameter" #~ msgstr "Mali ang UUID parameter" +#~ msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#~ msgstr "ang row buffer ay dapat bytearray o array na type ‘b’ or ‘B’" + +#~ msgid "row data must be a buffer" +#~ msgstr "row data ay dapat na buffer" + +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "ang keywords dapat strings" + +#~ msgid "index must be int" +#~ msgstr "index ay dapat int" + #~ msgid "Can not query for the device address." #~ msgstr "Hindi maaaring mag-query para sa address ng device." #~ msgid "All PWM peripherals are in use" #~ msgstr "Lahat ng PWM peripherals ay ginagamit" -#~ msgid "displayio is a work in progress" -#~ msgstr "displayio ay nasa gitna ng konstruksiyon" +#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" +#~ msgstr "" +#~ "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n" -#~ msgid "Cannot set PPCP parameters." -#~ msgstr "Hindi ma-set ang PPCP parameters." +#~ msgid "Group empty" +#~ msgstr "Walang laman ang group" -#~ msgid "Invalid UUID string length" -#~ msgstr "Mali ang UUID string length" - -#, fuzzy -#~ msgid "palette must be displayio.Palette" -#~ msgstr "ang palette ay dapat 32 bytes ang haba" +#~ msgid "Wrong address length" +#~ msgstr "Mali ang address length" #~ msgid "Can encode UUID into the advertisement packet." #~ msgstr "Maaring i-encode ang UUID sa advertisement packet." -#~ msgid "Cannot apply GAP parameters." -#~ msgstr "Hindi ma-apply ang GAP parameters." +#~ msgid "Invalid Service type" +#~ msgstr "Mali ang tipo ng serbisyo" -#~ msgid "Wrong address length" -#~ msgstr "Mali ang address length" +#~ msgid "Invalid UUID string length" +#~ msgstr "Mali ang UUID string length" + +#~ msgid "Can not add Service." +#~ msgstr "Hindi maidaragdag ang serbisyo." + +#~ msgid "displayio is a work in progress" +#~ msgstr "displayio ay nasa gitna ng konstruksiyon" #~ msgid "" #~ "enough power for the whole circuit and press reset (after ejecting " @@ -2928,34 +2954,30 @@ msgstr "" #~ "ay nagbibigay ng sapat na power para sa buong circuit at i-press ang " #~ "reset (pagkatapos i-eject ang CIRCUITPY).\n" +#, fuzzy +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Nabigong ilaan ang RX buffer ng %d bytes" + +#~ msgid "Can not encode UUID, to check length." +#~ msgstr "Hindi ma-encode UUID, para suriin ang haba." + +#~ msgid "Wrong number of bytes provided" +#~ msgstr "Mali ang bilang ng bytes" + +#~ msgid "Cannot apply GAP parameters." +#~ msgstr "Hindi ma-apply ang GAP parameters." + +#~ msgid "Can not apply device name in the stack." +#~ msgstr "Hindi maaaring ma-aplay ang device name sa stack." + +#~ msgid "Cannot set PPCP parameters." +#~ msgstr "Hindi ma-set ang PPCP parameters." + #~ msgid "" #~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" #~ msgstr "" #~ "Mag-file ng isang isyu dito gamit ang mga nilalaman ng iyong CIRCUITPY " #~ "drive:\n" -#~ msgid "Can not apply device name in the stack." -#~ msgstr "Hindi maaaring ma-aplay ang device name sa stack." - -#, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Nabigong ilaan ang RX buffer ng %d bytes" - -#~ msgid "Wrong number of bytes provided" -#~ msgstr "Mali ang bilang ng bytes" - -#~ msgid "Can not add Service." -#~ msgstr "Hindi maidaragdag ang serbisyo." - #~ msgid "Can not apply advertisement data. status: 0x%02x" #~ msgstr "Hindi ma i-apply ang advertisement data. status: 0x%02x" - -#~ msgid "Invalid Service type" -#~ msgstr "Mali ang tipo ng serbisyo" - -#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" -#~ msgstr "" -#~ "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n" - -#~ msgid "Can not encode UUID, to check length." -#~ msgstr "Hindi ma-encode UUID, para suriin ang haba." diff --git a/locale/fr.po b/locale/fr.po index 51a01768ad..b26b7da37a 100644 --- a/locale/fr.po +++ b/locale/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-12-23 20:05+0100\n" "Last-Translator: Pierrick Couturier \n" "Language-Team: fr\n" @@ -1819,71 +1819,71 @@ msgstr "les indices de chaîne de caractère doivent être des entiers, pas %s" msgid "string index out of range" msgstr "index de chaîne hors gamme" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "__init__() doit retourner None" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "__init__() doit retourner None, pas '%s'" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "attribut illisible" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "objet non appelable" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "objet '%s' non appelable" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "le type prend 1 ou 3 arguments" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "ne peut pas créer une instance" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "ne peut pas créer une instance de '%q'" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" "impossible d'ajouter une méthode spécial à une classe déjà sous-classée" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "le type n'est pas un type de base accepté" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "le type '%q' n'est pas un type de base accepté" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "héritage multiple non supporté" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "de multiple bases ont un conflit de lay-out d'instance" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "le premier argument de super() doit être un type" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" "l'argument 2 de issubclass() doit être une classe ou un tuple de classes" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "l'argument 1 de issubclass() doit être une classe" @@ -2206,7 +2206,7 @@ msgid "buffer must be a bytes-like object" msgstr "le tampon doit être un objet bytes-like" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "le fichier doit être un fichier ouvert en mode 'byte'" @@ -2371,86 +2371,99 @@ msgstr "Le tirage 'pull' n'est pas utilisé quand la direction est 'output'." msgid "Unsupported pull value." msgstr "Valeur de tirage 'pull' non supportée." -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" +msgstr "Impossible de supprimer les valeurs" + +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" +msgstr "Slices non supportées" + +#: shared-bindings/displayio/Bitmap.c:156 #, fuzzy -msgid "y should be an int" +msgid "pixel coordinates out of bounds" +msgstr "adresse hors limites" + +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +#, fuzzy +msgid "%q should be an int" msgstr "y doit être un entier (int)" -#: shared-bindings/displayio/Bitmap.c:89 -#, fuzzy -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "" -"le tampon de ligne doit être un bytearray ou un tableau de type 'b' ou 'B'" - -#: shared-bindings/displayio/Bitmap.c:94 -#, fuzzy -msgid "row data must be a buffer" -msgstr "les données de ligne doivent être un tampon" - -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/ColorConverter.c:70 #, fuzzy msgid "color should be an int" msgstr "la couleur doit être un entier (int)" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 #, fuzzy msgid "Command must be an int between 0 and 255" msgstr "Les octets 'bytes' doivent être entre 0 et 255" -#: shared-bindings/displayio/Group.c:62 +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 #, fuzzy -msgid "Group must have size at least 1" -msgstr "Le tampon doit être de longueur au moins 1" +msgid "%q must be >= 1" +msgstr "les slices de tampon doivent être de longueurs égales" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 #, fuzzy msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" "le tampon de couleur doit être un bytearray ou un tableau de type 'b' ou 'B'" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "le tampon de couleur doit faire 3 octets (RVB) ou 4 (RVB + pad byte)" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 #, fuzzy msgid "color must be between 0x000000 and 0xffffff" msgstr "la couleur doit être entre 0x000000 et 0xffffff" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 #, fuzzy msgid "color buffer must be a buffer or int" msgstr "le tampon de couleur doit être un tampon ou un entier" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 #, fuzzy msgid "palette_index should be an int" msgstr "palette_index devrait être un entier (int)'" +#: shared-bindings/displayio/Shape.c:88 +#, fuzzy +msgid "y should be an int" +msgstr "y doit être un entier (int)" + #: shared-bindings/displayio/Shape.c:92 #, fuzzy msgid "start_x should be an int" @@ -2466,20 +2479,20 @@ msgstr "y doit être un entier (int)" msgid "position must be 2-tuple" msgstr "position doit être un 2-tuple" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 #, fuzzy msgid "unsupported bitmap type" msgstr "type de bitmap non supporté" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" "pixel_shader doit être un objet displayio.Palette ou displayio.ColorConverter" @@ -2509,6 +2522,7 @@ msgstr "adresses vides" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "Attendu : %q" @@ -2563,19 +2577,7 @@ msgstr "" "La fréquence de PWM n'est pas modifiable quand variable_frequency est False " "à la construction." -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "Impossible de supprimer les valeurs" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "Slices non supportées" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "l'index doit être un entier" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "Lecture seule" @@ -2625,11 +2627,6 @@ msgstr "La luminosité doit être entre 0 et 255" msgid "Stack size must be at least 256" msgstr "La pile doit être au moins de 256" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "les noms doivent être des chaînes de caractère" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "la longueur de sleep ne doit pas être négative" @@ -2750,28 +2747,28 @@ msgstr "Pas de transfert sans broches MOSI et MISO" msgid "Only bit maps of 8 bit color or less are supported" msgstr "Seules les bitmaps de 8bits par couleur ou moins sont supportées" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Lecture seule" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "type de bitmap non supporté" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "Groupe plein" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -#, fuzzy -msgid "Group empty" -msgstr "Groupe vide" - #: shared-module/displayio/OnDiskBitmap.c:49 #, fuzzy msgid "Invalid BMP file" @@ -2918,9 +2915,32 @@ msgstr "" "Le bouton 'reset' a été appuyé pendant le démarrage de CircuitPython. " "Appuyer denouveau pour quitter de le mode sans-échec.\n" +#, fuzzy +#~ msgid "Group must have %q at least 1" +#~ msgstr "Le tampon doit être de longueur au moins 1" + +#~ msgid "Cannot set PPCP parameters." +#~ msgstr "Impossible d'appliquer les paramètres PPCP" + #~ msgid "Invalid UUID parameter" #~ msgstr "Paramètre UUID invalide" +#, fuzzy +#~ msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#~ msgstr "" +#~ "le tampon de ligne doit être un bytearray ou un tableau de type 'b' ou 'B'" + +#, fuzzy +#~ msgid "row data must be a buffer" +#~ msgstr "les données de ligne doivent être un tampon" + +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "les noms doivent être des chaînes de caractère" + +#~ msgid "index must be int" +#~ msgstr "l'index doit être un entier" + #, fuzzy #~ msgid "palette must be displayio.Palette" #~ msgstr "la palette doit être une displayio.Palette" @@ -2929,59 +2949,38 @@ msgstr "" #~ msgid "All PWM peripherals are in use" #~ msgstr "Tous les périphériques PWM sont utilisés" -#~ msgid "displayio is a work in progress" -#~ msgstr "displayio est en cours de développement" +#, fuzzy +#~ msgid "value_size must be power of two" +#~ msgstr "value_size doit être une puissance de 2" -#~ msgid "Cannot apply GAP parameters." -#~ msgstr "Impossible d'appliquer les paramètres GAP" - -#~ msgid "Invalid UUID string length" -#~ msgstr "Longeur de chaîne UUID invalide" - -#~ msgid "Cannot set PPCP parameters." -#~ msgstr "Impossible d'appliquer les paramètres PPCP" - -#~ msgid "Can not add Service." -#~ msgstr "Impossible d'ajouter le Service" - -#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" -#~ msgstr "" -#~ "Il semblerait que votre code CircuitPython a durement planté. Oups!\n" +#, fuzzy +#~ msgid "Group empty" +#~ msgstr "Groupe vide" #~ msgid "Wrong address length" #~ msgstr "Mauvaise longueur d'adresse" -#~ msgid "Invalid Service type" -#~ msgstr "Type de service invalide" - -#~ msgid "Can not encode UUID, to check length." -#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur." - -#~ msgid "" -#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" -#~ msgstr "" -#~ "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n" - -#, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Echec de l'allocation de %d octets du tampon RX" - -#, fuzzy -#~ msgid "Wrong number of bytes provided" -#~ msgstr "mauvais nombre d'octets fourni'" - -#~ msgid "Can not apply device name in the stack." -#~ msgstr "Impossible d'appliquer le nom de périphérique dans la pile" - -#~ msgid "Can not query for the device address." -#~ msgstr "Impossible d'obtenir l'adresse du périphérique" +#~ msgid "Can not add Service." +#~ msgstr "Impossible d'ajouter le Service" #~ msgid "Can not add Characteristic." #~ msgstr "Impossible d'ajouter la Characteristic." +#~ msgid "Invalid UUID string length" +#~ msgstr "Longeur de chaîne UUID invalide" + +#~ msgid "Can not apply device name in the stack." +#~ msgstr "Impossible d'appliquer le nom de périphérique dans la pile" + +#~ msgid "displayio is a work in progress" +#~ msgstr "displayio est en cours de développement" + +#~ msgid "Invalid Service type" +#~ msgstr "Type de service invalide" + #, fuzzy -#~ msgid "value_size must be power of two" -#~ msgstr "value_size doit être une puissance de 2" +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Echec de l'allocation de %d octets du tampon RX" #~ msgid "" #~ "enough power for the whole circuit and press reset (after ejecting " @@ -2989,3 +2988,25 @@ msgstr "" #~ msgstr "" #~ "assez de puissance pour l'ensemble du circuit et appuyez sur " #~ "'reset' (après avoir éjecter CIRCUITPY).\n" + +#, fuzzy +#~ msgid "Wrong number of bytes provided" +#~ msgstr "mauvais nombre d'octets fourni'" + +#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" +#~ msgstr "" +#~ "Il semblerait que votre code CircuitPython a durement planté. Oups!\n" + +#~ msgid "" +#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" +#~ msgstr "" +#~ "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n" + +#~ msgid "Cannot apply GAP parameters." +#~ msgstr "Impossible d'appliquer les paramètres GAP" + +#~ msgid "Can not encode UUID, to check length." +#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur." + +#~ msgid "Can not query for the device address." +#~ msgstr "Impossible d'obtenir l'adresse du périphérique" diff --git a/locale/it_IT.po b/locale/it_IT.po index 8d687b3829..b322b10178 100644 --- a/locale/it_IT.po +++ b/locale/it_IT.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-10-02 16:27+0200\n" "Last-Translator: Enrico Paganin \n" "Language-Team: \n" @@ -1815,71 +1815,71 @@ msgstr "indici della stringa devono essere interi, non %s" msgid "string index out of range" msgstr "indice della stringa fuori intervallo" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "__init__() deve ritornare None" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "__init__() deve ritornare None, non '%s'" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "attributo non leggibile" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "tipo prende 1 o 3 argomenti" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "impossibile creare un istanza" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "creare '%q' istanze" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "il tipo non è un tipo di base accettabile" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "il tipo '%q' non è un tipo di base accettabile" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "ereditarietà multipla non supportata" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" "il secondo argomento di issubclass() deve essere una classe o una tupla di " "classi" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "il primo argomento di issubclass() deve essere una classe" @@ -2203,7 +2203,7 @@ msgid "buffer must be a bytes-like object" msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "" @@ -2368,77 +2368,94 @@ msgstr "" msgid "Unsupported pull value." msgstr "Valore di pull non supportato." -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" +msgstr "Impossibile cancellare valori" + +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" +msgstr "Slice non supportate" + +#: shared-bindings/displayio/Bitmap.c:156 +#, fuzzy +msgid "pixel coordinates out of bounds" +msgstr "indirizzo fuori limite" + +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +#, fuzzy +msgid "%q should be an int" msgstr "y dovrebbe essere un int" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "buffer di riga deve essere un bytearray o un array di tipo 'b' o 'B'" - -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" -msgstr "valori della riga devono essere un buffer" - -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "il colore deve essere un int" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 #, fuzzy msgid "Command must be an int between 0 and 255" msgstr "I byte devono essere compresi tra 0 e 255" -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "Il gruppo deve avere dimensione almeno 1" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "slice del buffer devono essere della stessa lunghezza" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" "buffer del colore deve essere un bytearray o un array di tipo 'b' o 'B'" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" "il buffer del colore deve esseer di 3 byte (RGB) o 4 byte (RGB + pad byte)" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "il colore deve essere compreso tra 0x000000 e 0xffffff" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "il buffer del colore deve essere un buffer o un int" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "palette_index deve essere un int" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "y dovrebbe essere un int" + #: shared-bindings/displayio/Shape.c:92 #, fuzzy msgid "start_x should be an int" @@ -2453,19 +2470,19 @@ msgstr "y dovrebbe essere un int" msgid "position must be 2-tuple" msgstr "position deve essere una 2-tuple" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "tipo di bitmap non supportato" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "pixel_shader deve essere displayio.Palette o displayio.ColorConverter" @@ -2493,6 +2510,7 @@ msgstr "gli indirizzi sono vuoti" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "Atteso un %q" @@ -2547,19 +2565,7 @@ msgstr "" "frequenza PWM frequency non è scrivibile quando variable_frequency è " "impostato nel costruttore a False." -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "Impossibile cancellare valori" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "Slice non supportate" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "l'indice deve essere int" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "Sola lettura" @@ -2609,11 +2615,6 @@ msgstr "La luminosità deve essere compreso tra 0 e 255" msgid "Stack size must be at least 256" msgstr "La dimensione dello stack deve essere almeno 256" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "argomenti nominati devono essere stringhe" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "la lunghezza di sleed deve essere non negativa" @@ -2734,27 +2735,28 @@ msgstr "Impossibile trasferire senza i pin MOSI e MISO." msgid "Only bit maps of 8 bit color or less are supported" msgstr "Sono supportate solo bitmap con colori a 8 bit o meno" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "la riga deve essere compattata e allineata alla parola" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Sola lettura" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "tipo di bitmap non supportato" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "Gruppo pieno" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "Gruppo vuoto" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "File BMP non valido" @@ -2887,34 +2889,75 @@ msgid "" "exit safe mode.\n" msgstr "" +#~ msgid "row data must be a buffer" +#~ msgstr "valori della riga devono essere un buffer" + #, fuzzy -#~ msgid "Wrong number of bytes provided" -#~ msgstr "numero di argomenti errato" +#~ msgid "Group must have %q at least 1" +#~ msgstr "Il gruppo deve avere dimensione almeno 1" #~ msgid "Invalid UUID parameter" #~ msgstr "Parametro UUID non valido" +#~ msgid "Group empty" +#~ msgstr "Gruppo vuoto" + #, fuzzy #~ msgid "All PWM peripherals are in use" #~ msgstr "Tutte le periferiche SPI sono in uso" +#~ msgid "row buffer must be a bytearray or array of type 'b' or 'B'" +#~ msgstr "" +#~ "buffer di riga deve essere un bytearray o un array di tipo 'b' o 'B'" + +#, fuzzy +#~ msgid "unicode_characters must be a string" +#~ msgstr "argomenti nominati devono essere stringhe" + +#~ msgid "index must be int" +#~ msgstr "l'indice deve essere int" + #~ msgid "Invalid Service type" #~ msgstr "Tipo di servizio non valido" +#, fuzzy +#~ msgid "Wrong number of bytes provided" +#~ msgstr "numero di argomenti errato" + #~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n" #~ msgstr "" #~ "Sembra che il codice del core di CircuitPython sia crashato malamente. " #~ "Whoops!\n" +#~ msgid "Can not add Characteristic." +#~ msgstr "Non è possibile aggiungere Characteristic." + +#~ msgid "Cannot apply GAP parameters." +#~ msgstr "Impossibile applicare i parametri GAP." + +#~ msgid "Can not apply advertisement data. status: 0x%02x" +#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x" + +#~ msgid "" +#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" +#~ msgstr "" +#~ "Ti preghiamo di compilare una issue con il contenuto del tuo drie " +#~ "CIRCUITPY:\n" + #~ msgid "Can not query for the device address." #~ msgstr "Non è possibile trovare l'indirizzo del dispositivo." #~ msgid "Cannot set PPCP parameters." #~ msgstr "Impossibile impostare i parametri PPCP." -#, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Fallita allocazione del buffer RX di %d byte" +#~ msgid "Can not apply device name in the stack." +#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista." + +#~ msgid "Can encode UUID into the advertisement packet." +#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement." + +#~ msgid "Can not add Service." +#~ msgstr "Non è possibile aggiungere Service." #~ msgid "" #~ "enough power for the whole circuit and press reset (after ejecting " @@ -2923,32 +2966,12 @@ msgstr "" #~ "abbastanza potenza per l'intero circuito e premere reset (dopo aver " #~ "espulso CIRCUITPY).\n" -#~ msgid "Can not add Service." -#~ msgstr "Non è possibile aggiungere Service." - -#~ msgid "Can not apply advertisement data. status: 0x%02x" -#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x" - -#~ msgid "Can not apply device name in the stack." -#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista." - -#~ msgid "Can not add Characteristic." -#~ msgstr "Non è possibile aggiungere Characteristic." - -#~ msgid "Can not encode UUID, to check length." -#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare." - #~ msgid "Invalid UUID string length" #~ msgstr "Lunghezza della stringa UUID non valida" -#~ msgid "Cannot apply GAP parameters." -#~ msgstr "Impossibile applicare i parametri GAP." +#, fuzzy +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Fallita allocazione del buffer RX di %d byte" -#~ msgid "Can encode UUID into the advertisement packet." -#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement." - -#~ msgid "" -#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n" -#~ msgstr "" -#~ "Ti preghiamo di compilare una issue con il contenuto del tuo drie " -#~ "CIRCUITPY:\n" +#~ msgid "Can not encode UUID, to check length." +#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare." diff --git a/locale/pt_BR.po b/locale/pt_BR.po index 59d384dd66..1817cabc2f 100644 --- a/locale/pt_BR.po +++ b/locale/pt_BR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-07 09:09-0600\n" +"POT-Creation-Date: 2019-02-12 15:01-0800\n" "PO-Revision-Date: 2018-10-02 21:14-0000\n" "Last-Translator: \n" "Language-Team: \n" @@ -1794,69 +1794,69 @@ msgstr "" msgid "string index out of range" msgstr "" -#: py/objtype.c:368 +#: py/objtype.c:371 msgid "__init__() should return None" msgstr "" -#: py/objtype.c:370 +#: py/objtype.c:373 #, c-format msgid "__init__() should return None, not '%s'" msgstr "" -#: py/objtype.c:633 py/objtype.c:1287 py/runtime.c:1065 +#: py/objtype.c:636 py/objtype.c:1290 py/runtime.c:1065 msgid "unreadable attribute" msgstr "atributo ilegível" -#: py/objtype.c:878 py/runtime.c:653 +#: py/objtype.c:881 py/runtime.c:653 msgid "object not callable" msgstr "" -#: py/objtype.c:880 py/runtime.c:655 +#: py/objtype.c:883 py/runtime.c:655 #, c-format msgid "'%s' object is not callable" msgstr "" -#: py/objtype.c:988 +#: py/objtype.c:991 msgid "type takes 1 or 3 arguments" msgstr "" -#: py/objtype.c:999 +#: py/objtype.c:1002 msgid "cannot create instance" msgstr "não é possível criar instância" -#: py/objtype.c:1001 +#: py/objtype.c:1004 msgid "cannot create '%q' instances" msgstr "" -#: py/objtype.c:1059 +#: py/objtype.c:1062 msgid "can't add special method to already-subclassed class" msgstr "" -#: py/objtype.c:1103 py/objtype.c:1109 +#: py/objtype.c:1106 py/objtype.c:1112 msgid "type is not an acceptable base type" msgstr "" -#: py/objtype.c:1112 +#: py/objtype.c:1115 msgid "type '%q' is not an acceptable base type" msgstr "" -#: py/objtype.c:1149 +#: py/objtype.c:1152 msgid "multiple inheritance not supported" msgstr "" -#: py/objtype.c:1176 +#: py/objtype.c:1179 msgid "multiple bases have instance lay-out conflict" msgstr "" -#: py/objtype.c:1217 +#: py/objtype.c:1220 msgid "first argument to super() must be type" msgstr "" -#: py/objtype.c:1382 +#: py/objtype.c:1385 msgid "issubclass() arg 2 must be a class or a tuple of classes" msgstr "" -#: py/objtype.c:1396 +#: py/objtype.c:1399 msgid "issubclass() arg 1 must be a class" msgstr "" @@ -2169,7 +2169,7 @@ msgid "buffer must be a bytes-like object" msgstr "" #: shared-bindings/audioio/WaveFile.c:78 -#: shared-bindings/displayio/OnDiskBitmap.c:87 +#: shared-bindings/displayio/OnDiskBitmap.c:85 msgid "file must be a file opened in byte mode" msgstr "" @@ -2334,75 +2334,91 @@ msgstr "" msgid "Unsupported pull value." msgstr "" -#: shared-bindings/displayio/Bitmap.c:84 shared-bindings/displayio/Shape.c:88 -msgid "y should be an int" +#: shared-bindings/displayio/Bitmap.c:131 shared-bindings/pulseio/PulseIn.c:272 +msgid "Cannot delete values" +msgstr "Não é possível excluir valores" + +#: shared-bindings/displayio/Bitmap.c:139 shared-bindings/displayio/Group.c:253 +#: shared-bindings/pulseio/PulseIn.c:278 +msgid "Slices not supported" +msgstr "" + +#: shared-bindings/displayio/Bitmap.c:156 +msgid "pixel coordinates out of bounds" +msgstr "" + +#: shared-bindings/displayio/Bitmap.c:166 +msgid "pixel value requires too many bits" +msgstr "" + +#: shared-bindings/displayio/BuiltinFont.c:93 +#, fuzzy +msgid "%q should be an int" msgstr "y deve ser um int" -#: shared-bindings/displayio/Bitmap.c:89 -msgid "row buffer must be a bytearray or array of type 'b' or 'B'" -msgstr "" - -#: shared-bindings/displayio/Bitmap.c:94 -msgid "row data must be a buffer" -msgstr "" - -#: shared-bindings/displayio/ColorConverter.c:72 +#: shared-bindings/displayio/ColorConverter.c:70 msgid "color should be an int" msgstr "cor deve ser um int" -#: shared-bindings/displayio/Display.c:131 +#: shared-bindings/displayio/Display.c:129 msgid "Display rotation must be in 90 degree increments" msgstr "" -#: shared-bindings/displayio/Display.c:143 +#: shared-bindings/displayio/Display.c:141 msgid "Too many displays" msgstr "" -#: shared-bindings/displayio/Display.c:167 +#: shared-bindings/displayio/Display.c:165 msgid "Must be a Group subclass." msgstr "" -#: shared-bindings/displayio/Display.c:209 -#: shared-bindings/displayio/Display.c:219 +#: shared-bindings/displayio/Display.c:207 +#: shared-bindings/displayio/Display.c:217 msgid "Brightness not adjustable" msgstr "" -#: shared-bindings/displayio/FourWire.c:93 -#: shared-bindings/displayio/ParallelBus.c:98 +#: shared-bindings/displayio/FourWire.c:91 +#: shared-bindings/displayio/ParallelBus.c:96 msgid "Too many display busses" msgstr "" -#: shared-bindings/displayio/FourWire.c:109 -#: shared-bindings/displayio/ParallelBus.c:113 +#: shared-bindings/displayio/FourWire.c:107 +#: shared-bindings/displayio/ParallelBus.c:111 #, fuzzy msgid "Command must be an int between 0 and 255" msgstr "Os bytes devem estar entre 0 e 255." -#: shared-bindings/displayio/Group.c:62 -msgid "Group must have size at least 1" -msgstr "Grupo deve ter tamanho pelo menos 1" +#: shared-bindings/displayio/Group.c:63 shared-bindings/displayio/Group.c:68 +#: shared-bindings/displayio/Group.c:100 +#, fuzzy +msgid "%q must be >= 1" +msgstr "buffers devem ser o mesmo tamanho" -#: shared-bindings/displayio/Palette.c:93 +#: shared-bindings/displayio/Palette.c:91 msgid "color buffer must be a bytearray or array of type 'b' or 'B'" msgstr "" -#: shared-bindings/displayio/Palette.c:99 +#: shared-bindings/displayio/Palette.c:97 msgid "color buffer must be 3 bytes (RGB) or 4 bytes (RGB + pad byte)" msgstr "" -#: shared-bindings/displayio/Palette.c:103 +#: shared-bindings/displayio/Palette.c:101 msgid "color must be between 0x000000 and 0xffffff" msgstr "cor deve estar entre 0x000000 e 0xffffff" -#: shared-bindings/displayio/Palette.c:107 +#: shared-bindings/displayio/Palette.c:105 msgid "color buffer must be a buffer or int" msgstr "" -#: shared-bindings/displayio/Palette.c:120 -#: shared-bindings/displayio/Palette.c:134 +#: shared-bindings/displayio/Palette.c:118 +#: shared-bindings/displayio/Palette.c:132 msgid "palette_index should be an int" msgstr "" +#: shared-bindings/displayio/Shape.c:88 +msgid "y should be an int" +msgstr "y deve ser um int" + #: shared-bindings/displayio/Shape.c:92 #, fuzzy msgid "start_x should be an int" @@ -2417,19 +2433,19 @@ msgstr "y deve ser um int" msgid "position must be 2-tuple" msgstr "" -#: shared-bindings/displayio/TileGrid.c:117 +#: shared-bindings/displayio/TileGrid.c:115 msgid "unsupported bitmap type" msgstr "" -#: shared-bindings/displayio/TileGrid.c:128 +#: shared-bindings/displayio/TileGrid.c:126 msgid "Tile width must exactly divide bitmap width" msgstr "" -#: shared-bindings/displayio/TileGrid.c:131 +#: shared-bindings/displayio/TileGrid.c:129 msgid "Tile height must exactly divide bitmap height" msgstr "" -#: shared-bindings/displayio/TileGrid.c:198 +#: shared-bindings/displayio/TileGrid.c:196 msgid "pixel_shader must be displayio.Palette or displayio.ColorConverter" msgstr "" @@ -2457,6 +2473,7 @@ msgstr "" #: shared-bindings/neopixel_write/__init__.c:67 #: shared-bindings/pulseio/PulseOut.c:76 #: shared-bindings/terminalio/Terminal.c:63 +#: shared-bindings/terminalio/Terminal.c:68 msgid "Expected a %q" msgstr "Esperado um" @@ -2506,19 +2523,7 @@ msgid "" "PWM frequency not writable when variable_frequency is False on construction." msgstr "" -#: shared-bindings/pulseio/PulseIn.c:272 -msgid "Cannot delete values" -msgstr "Não é possível excluir valores" - -#: shared-bindings/pulseio/PulseIn.c:278 -msgid "Slices not supported" -msgstr "" - -#: shared-bindings/pulseio/PulseIn.c:284 -msgid "index must be int" -msgstr "index deve ser int" - -#: shared-bindings/pulseio/PulseIn.c:290 +#: shared-bindings/pulseio/PulseIn.c:285 msgid "Read-only" msgstr "Somente leitura" @@ -2567,11 +2572,6 @@ msgstr "O brilho deve estar entre 0 e 255" msgid "Stack size must be at least 256" msgstr "O tamanho da pilha deve ser pelo menos 256" -#: shared-bindings/terminalio/Terminal.c:68 -#, fuzzy -msgid "unicode_characters must be a string" -msgstr "heap deve ser uma lista" - #: shared-bindings/time/__init__.c:78 msgid "sleep length must be non-negative" msgstr "" @@ -2691,27 +2691,28 @@ msgstr "Não é possível transferir sem os pinos MOSI e MISO." msgid "Only bit maps of 8 bit color or less are supported" msgstr "Apenas bit maps de cores de 8 bit ou menos são suportados" -#: shared-module/displayio/Bitmap.c:69 +#: shared-module/displayio/Bitmap.c:81 msgid "row must be packed and word aligned" msgstr "Linha deve ser comprimida e com as palavras alinhadas" +#: shared-module/displayio/Bitmap.c:118 +#, fuzzy +msgid "Read-only object" +msgstr "Somente leitura" + #: shared-module/displayio/Display.c:67 #, fuzzy msgid "Unsupported display bus type" msgstr "Taxa de transmissão não suportada" -#: shared-module/displayio/Group.c:39 +#: shared-module/displayio/Group.c:66 msgid "Group full" msgstr "Grupo cheio" -#: shared-module/displayio/Group.c:46 +#: shared-module/displayio/Group.c:73 msgid "Layer must be a Group or TileGrid subclass." msgstr "" -#: shared-module/displayio/Group.c:55 -msgid "Group empty" -msgstr "Grupo vazio" - #: shared-module/displayio/OnDiskBitmap.c:49 msgid "Invalid BMP file" msgstr "Arquivo BMP inválido" @@ -2836,34 +2837,32 @@ msgid "" "exit safe mode.\n" msgstr "" -#~ msgid "Can not apply device name in the stack." -#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha." +#~ msgid "index must be int" +#~ msgstr "index deve ser int" #, fuzzy -#~ msgid "unpack requires a buffer of %d bytes" -#~ msgstr "Falha ao alocar buffer RX de %d bytes" +#~ msgid "Group must have %q at least 1" +#~ msgstr "Grupo deve ter tamanho pelo menos 1" -#~ msgid "Baud rate too high for this SPI peripheral" -#~ msgstr "Taxa de transmissão muito alta para esse periférico SPI" +#~ msgid "Group empty" +#~ msgstr "Grupo vazio" #, fuzzy -#~ msgid "All PWM peripherals are in use" -#~ msgstr "Todos os temporizadores em uso" +#~ msgid "unicode_characters must be a string" +#~ msgstr "heap deve ser uma lista" #~ msgid "Invalid UUID parameter" #~ msgstr "Parâmetro UUID inválido" +#~ msgid "Baud rate too high for this SPI peripheral" +#~ msgstr "Taxa de transmissão muito alta para esse periférico SPI" + #~ msgid "Can encode UUID into the advertisement packet." #~ msgstr "Pode codificar o UUID no pacote de anúncios." -#~ msgid "Can not apply advertisement data. status: 0x%02x" -#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x" - -#~ msgid "Cannot set PPCP parameters." -#~ msgstr "Não é possível definir parâmetros PPCP." - -#~ msgid "Can not add Characteristic." -#~ msgstr "Não é possível adicionar Característica." +#, fuzzy +#~ msgid "unpack requires a buffer of %d bytes" +#~ msgstr "Falha ao alocar buffer RX de %d bytes" #~ msgid "Can not query for the device address." #~ msgstr "Não é possível consultar o endereço do dispositivo." @@ -2871,5 +2870,21 @@ msgstr "" #~ msgid "Invalid Service type" #~ msgstr "Tipo de serviço inválido" +#~ msgid "Cannot set PPCP parameters." +#~ msgstr "Não é possível definir parâmetros PPCP." + +#~ msgid "Can not apply device name in the stack." +#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha." + #~ msgid "Cannot apply GAP parameters." #~ msgstr "Não é possível aplicar parâmetros GAP." + +#~ msgid "Can not apply advertisement data. status: 0x%02x" +#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x" + +#~ msgid "Can not add Characteristic." +#~ msgstr "Não é possível adicionar Característica." + +#, fuzzy +#~ msgid "All PWM peripherals are in use" +#~ msgstr "Todos os temporizadores em uso" diff --git a/ports/atmel-samd/Makefile b/ports/atmel-samd/Makefile index 56c31e5d85..56a8581777 100644 --- a/ports/atmel-samd/Makefile +++ b/ports/atmel-samd/Makefile @@ -366,6 +366,7 @@ SRC_BINDINGS_ENUMS = \ digitalio/Direction.c \ digitalio/DriveMode.c \ digitalio/Pull.c \ + displayio/Glyph.c \ microcontroller/RunMode.c \ help.c \ math/__init__.c \ @@ -381,6 +382,7 @@ SRC_SHARED_MODULE = \ busio/OneWire.c \ displayio/__init__.c \ displayio/Bitmap.c \ + displayio/BuiltinFont.c \ displayio/ColorConverter.c \ displayio/Display.c \ displayio/FourWire.c \ diff --git a/ports/atmel-samd/boards/pyportal/board.c b/ports/atmel-samd/boards/pyportal/board.c index 9b05063baf..d9631e2dc9 100644 --- a/ports/atmel-samd/boards/pyportal/board.c +++ b/ports/atmel-samd/boards/pyportal/board.c @@ -82,7 +82,7 @@ void board_init(void) { 240, // Height 0, // column start 0, // row start - 90, // rotation + 270, // rotation 16, // Color depth MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command diff --git a/ports/atmel-samd/common-hal/busio/UART.c b/ports/atmel-samd/common-hal/busio/UART.c index bb0666577b..bc91e62f59 100644 --- a/ports/atmel-samd/common-hal/busio/UART.c +++ b/ports/atmel-samd/common-hal/busio/UART.c @@ -164,24 +164,24 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self, // 0x1: TX pad 2; no RTS/CTS // 0x2: TX pad 0; RTS: pad 2, CTS: pad 3 (not used by us right now) // So divide by 2 to map pad to value. - hri_sercomusart_write_CTRLA_TXPO_bf(sercom, tx_pad / 2); // RXPO: // 0x0: RX pad 0 // 0x1: RX pad 1 // 0x2: RX pad 2 // 0x3: RX pad 3 - hri_sercomusart_write_CTRLA_RXPO_bf(sercom, rx_pad); + sercom->USART.CTRLA.reg = SERCOM_USART_CTRLA_TXPO(tx_pad / 2) | + SERCOM_USART_CTRLA_RXPO(rx_pad) | + (parity == PARITY_NONE ? 0 : SERCOM_USART_CTRLA_FORM(1)); // Enable tx and/or rx based on whether the pins were specified. - hri_sercomusart_write_CTRLB_TXEN_bit(sercom, have_tx); - hri_sercomusart_write_CTRLB_RXEN_bit(sercom, have_rx); + // CHSIZE is 0 for 8 bits, 5, 6, 7 for 5, 6, 7 bits. 1 for 9 bits, but we don't support that. + sercom->USART.CTRLB.reg = (have_tx ? SERCOM_USART_CTRLB_TXEN : 0) | + (have_rx ? SERCOM_USART_CTRLB_RXEN : 0) | + (parity == PARITY_ODD ? SERCOM_USART_CTRLB_PMODE : 0) | + (stop > 1 ? SERCOM_USART_CTRLB_SBMODE : 0) | + SERCOM_USART_CTRLB_CHSIZE(bits % 8); - // Set parity, baud rate, stop bits, etc. 9-bit bytes not supported. - usart_async_set_parity(usart_desc_p, parity == PARITY_NONE ? USART_PARITY_NONE : - (parity == PARITY_ODD ? USART_PARITY_ODD : USART_PARITY_EVEN)); - usart_async_set_stopbits(usart_desc_p, stop == 1 ? USART_STOP_BITS_ONE : USART_STOP_BITS_TWO); - // This field is 0 for 8 bits, 5, 6, 7 for 5, 6, 7 bits. 1 for 9 bits, but we don't support that. - usart_async_set_character_size(usart_desc_p, bits % 8); + // Set baud rate common_hal_busio_uart_set_baudrate(self, baudrate); // Turn on rx interrupt handling. The UART async driver has its own set of internal callbacks, diff --git a/ports/nrf/Makefile b/ports/nrf/Makefile index f4de71db77..ac7024e827 100755 --- a/ports/nrf/Makefile +++ b/ports/nrf/Makefile @@ -195,6 +195,7 @@ SRC_BINDINGS_ENUMS = \ digitalio/Direction.c \ digitalio/DriveMode.c \ digitalio/Pull.c \ + displayio/Glyph.c \ microcontroller/RunMode.c \ help.c \ math/__init__.c \ @@ -221,6 +222,7 @@ SRC_SHARED_MODULE = \ busio/OneWire.c \ displayio/__init__.c \ displayio/Bitmap.c \ + displayio/BuiltinFont.c \ displayio/ColorConverter.c \ displayio/Display.c \ displayio/FourWire.c \ diff --git a/ports/nrf/mpconfigport.h b/ports/nrf/mpconfigport.h index 6bcd5cfcf1..bdee568ac2 100644 --- a/ports/nrf/mpconfigport.h +++ b/ports/nrf/mpconfigport.h @@ -121,9 +121,6 @@ #define MICROPY_KBD_EXCEPTION (1) -#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1) -#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE (0) - // Scan gamepad every 32ms #define CIRCUITPY_GAMEPAD_TICKS 0x1f diff --git a/py/objtype.c b/py/objtype.c index fec99da1a6..f205c224e6 100644 --- a/py/objtype.c +++ b/py/objtype.c @@ -171,6 +171,9 @@ STATIC void mp_obj_class_lookup(struct class_lookup_data *lookup, const mp_obj_ // do a lookup, not a (base) type in which we found the class method. const mp_obj_type_t *org_type = (const mp_obj_type_t*)lookup->obj; mp_convert_member_lookup(MP_OBJ_NULL, org_type, elem->value, lookup->dest); + } else if (MP_OBJ_IS_TYPE(elem->value, &mp_type_property)) { + lookup->dest[0] = elem->value; + return; } else { mp_obj_instance_t *obj = lookup->obj; mp_obj_t obj_obj; diff --git a/shared-bindings/displayio/Bitmap.c b/shared-bindings/displayio/Bitmap.c index cee3998dc1..3612b8d63f 100644 --- a/shared-bindings/displayio/Bitmap.c +++ b/shared-bindings/displayio/Bitmap.c @@ -43,8 +43,6 @@ //| //| Stores values of a certain size in a 2D array //| -//| .. warning:: This will likely be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: Bitmap(width, height, value_count) //| //| Create a Bitmap object with the given fixed size. Each pixel stores a value that is used to @@ -71,34 +69,110 @@ STATIC mp_obj_t displayio_bitmap_make_new(const mp_obj_type_t *type, size_t n_ar return MP_OBJ_FROM_PTR(self); } - - -//| .. method:: _load_row(y, data) +//| .. attribute:: width //| -//| Loads pre-packed data into the given row. +//| Width of the bitmap. (read only) //| -STATIC mp_obj_t displayio_bitmap_obj__load_row(mp_obj_t self_in, mp_obj_t y_in, mp_obj_t data_in) { +STATIC mp_obj_t displayio_bitmap_obj_get_width(mp_obj_t self_in) { displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); - mp_int_t y; - if (!mp_obj_get_int_maybe(y_in, &y)) { - mp_raise_ValueError(translate("y should be an int")); + + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_bitmap_get_width(self)); +} + +MP_DEFINE_CONST_FUN_OBJ_1(displayio_bitmap_get_width_obj, displayio_bitmap_obj_get_width); + +const mp_obj_property_t displayio_bitmap_width_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_bitmap_get_width_obj, + (mp_obj_t)&mp_const_none_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + +//| .. attribute:: height +//| +//| Height of the bitmap. (read only) +//| +STATIC mp_obj_t displayio_bitmap_obj_get_height(mp_obj_t self_in) { + displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); + + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_bitmap_get_height(self)); +} + +MP_DEFINE_CONST_FUN_OBJ_1(displayio_bitmap_get_height_obj, displayio_bitmap_obj_get_height); + +const mp_obj_property_t displayio_bitmap_height_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_bitmap_get_height_obj, + (mp_obj_t)&mp_const_none_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + +//| .. method:: __getitem__(index) +//| +//| Returns the value at the given index. The index can either be an x,y tuple or an int equal +//| to ``y * width + x``. +//| +//| This allows you to:: +//| +//| print(bitmap[0,1]) +//| +//| .. method:: __setitem__(index, value) +//| +//| Sets the value at the given index. The index can either be an x,y tuple or an int equal +//| to ``y * width + x``. +//| +//| This allows you to:: +//| +//| bitmap[0,1] = 3 +//| +STATIC mp_obj_t bitmap_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value_obj) { + if (value_obj == mp_const_none) { + // delete item + mp_raise_AttributeError(translate("Cannot delete values")); + return mp_const_none; } - mp_buffer_info_t bufinfo; - if (mp_get_buffer(data_in, &bufinfo, MP_BUFFER_READ)) { - if (bufinfo.typecode != 'b' && bufinfo.typecode != 'B' && bufinfo.typecode != BYTEARRAY_TYPECODE) { - mp_raise_ValueError(translate("row buffer must be a bytearray or array of type 'b' or 'B'")); - } - uint8_t* buf = bufinfo.buf; - common_hal_displayio_bitmap_load_row(self, y, buf, bufinfo.len); + + displayio_bitmap_t *self = MP_OBJ_TO_PTR(self_in); + + if (MP_OBJ_IS_TYPE(index_obj, &mp_type_slice)) { + // TODO(tannewt): Implement subscr after slices support start, stop and step tuples. + mp_raise_NotImplementedError(translate("Slices not supported")); + return mp_const_none; + } + + uint16_t x = 0; + uint16_t y = 0; + if (MP_OBJ_IS_SMALL_INT(index_obj)) { + mp_int_t i = MP_OBJ_SMALL_INT_VALUE(index_obj); + uint16_t width = common_hal_displayio_bitmap_get_width(self); + x = i % width; + y = i / width; } else { - mp_raise_TypeError(translate("row data must be a buffer")); + mp_obj_t* items; + mp_obj_get_array_fixed_n(index_obj, 2, &items); + x = mp_obj_get_int(items[0]); + y = mp_obj_get_int(items[1]); + if (x >= common_hal_displayio_bitmap_get_width(self) || y >= common_hal_displayio_bitmap_get_height(self)) { + mp_raise_IndexError(translate("pixel coordinates out of bounds")); + } + } + + if (value_obj == MP_OBJ_SENTINEL) { + // load + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_bitmap_get_pixel(self, x, y)); + } else { + mp_int_t value = mp_obj_get_int(value_obj); + if (value >= 1 << common_hal_displayio_bitmap_get_bits_per_value(self)) { + mp_raise_ValueError(translate("pixel value requires too many bits")); + } + common_hal_displayio_bitmap_set_pixel(self, x, y, value); } return mp_const_none; } -MP_DEFINE_CONST_FUN_OBJ_3(displayio_bitmap__load_row_obj, displayio_bitmap_obj__load_row); STATIC const mp_rom_map_elem_t displayio_bitmap_locals_dict_table[] = { - { MP_ROM_QSTR(MP_QSTR__load_row), MP_ROM_PTR(&displayio_bitmap__load_row_obj) }, + { MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&displayio_bitmap_height_obj) }, + { MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&displayio_bitmap_width_obj) }, }; STATIC MP_DEFINE_CONST_DICT(displayio_bitmap_locals_dict, displayio_bitmap_locals_dict_table); @@ -106,7 +180,6 @@ const mp_obj_type_t displayio_bitmap_type = { { &mp_type_type }, .name = MP_QSTR_Bitmap, .make_new = displayio_bitmap_make_new, - // TODO(tannewt): Implement subscr after slices support start, stop and step tuples. - // .subscr = displayio_bitmap_subscr, + .subscr = bitmap_subscr, .locals_dict = (mp_obj_dict_t*)&displayio_bitmap_locals_dict, }; diff --git a/shared-bindings/displayio/Bitmap.h b/shared-bindings/displayio/Bitmap.h index b736f9459c..90694951fa 100644 --- a/shared-bindings/displayio/Bitmap.h +++ b/shared-bindings/displayio/Bitmap.h @@ -36,6 +36,10 @@ void common_hal_displayio_bitmap_construct(displayio_bitmap_t *self, uint32_t wi void common_hal_displayio_bitmap_load_row(displayio_bitmap_t *self, uint16_t y, uint8_t* data, uint16_t len); +uint16_t common_hal_displayio_bitmap_get_height(displayio_bitmap_t *self); +uint16_t common_hal_displayio_bitmap_get_width(displayio_bitmap_t *self); +uint32_t common_hal_displayio_bitmap_get_bits_per_value(displayio_bitmap_t *self); +void common_hal_displayio_bitmap_set_pixel(displayio_bitmap_t *bitmap, int16_t x, int16_t y, uint32_t value); uint32_t common_hal_displayio_bitmap_get_pixel(displayio_bitmap_t *bitmap, int16_t x, int16_t y); #endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BITMAP_H diff --git a/shared-bindings/displayio/BuiltinFont.c b/shared-bindings/displayio/BuiltinFont.c new file mode 100644 index 0000000000..55d38458ef --- /dev/null +++ b/shared-bindings/displayio/BuiltinFont.c @@ -0,0 +1,110 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "shared-bindings/displayio/BuiltinFont.h" + +#include + +#include "lib/utils/context_manager_helpers.h" +#include "py/binary.h" +#include "py/objproperty.h" +#include "py/runtime.h" +#include "shared-bindings/microcontroller/Pin.h" +#include "shared-bindings/util.h" +#include "supervisor/shared/translate.h" + +//| .. currentmodule:: displayio +//| +//| :class:`BuiltinFont` -- A font built into CircuitPython +//| ========================================================================================= +//| +//| A font built into CircuitPython. +//| +//| .. class:: BuiltinFont() +//| +//| Creation not supported. Available fonts are defined when CircuitPython is built. See the +//| `Adafruit_CircuitPython_Bitmap_Font `_ +//| library for dynamically loaded fonts. +//| + +//| .. attribute:: bitmap +//| +//| Bitmap containing all font glyphs starting with ASCII and followed by unicode. Use +//| `get_glyph` in most cases. This is useful for use with `displayio.TileGrid` and +//| `terminalio.Terminal`. +//| +STATIC mp_obj_t displayio_builtinfont_obj_get_bitmap(mp_obj_t self_in) { + displayio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); + return common_hal_displayio_builtinfont_get_bitmap(self); +} +MP_DEFINE_CONST_FUN_OBJ_1(displayio_builtinfont_get_bitmap_obj, displayio_builtinfont_obj_get_bitmap); + +const mp_obj_property_t displayio_builtinfont_bitmap_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_builtinfont_get_bitmap_obj, + (mp_obj_t)&mp_const_none_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + +//| .. method:: get_bounding_box() +//| +//| Returns the maximum bounds of all glyphs in the font in a tuple of two values: width, height. +//| +STATIC mp_obj_t displayio_builtinfont_obj_get_bounding_box(mp_obj_t self_in) { + displayio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); + + return common_hal_displayio_builtinfont_get_bounding_box(self); +} +MP_DEFINE_CONST_FUN_OBJ_1(displayio_builtinfont_get_bounding_box_obj, displayio_builtinfont_obj_get_bounding_box); + + +//| .. method:: get_glyph(codepoint) +//| +//| Returns a `displayio.Glyph` for the given codepoint or None if no glyph is available. +//| +STATIC mp_obj_t displayio_builtinfont_obj_get_glyph(mp_obj_t self_in, mp_obj_t codepoint_obj) { + displayio_builtinfont_t *self = MP_OBJ_TO_PTR(self_in); + + mp_int_t codepoint; + if (!mp_obj_get_int_maybe(codepoint_obj, &codepoint)) { + mp_raise_ValueError_varg(translate("%q should be an int"), MP_QSTR_codepoint); + } + return common_hal_displayio_builtinfont_get_glyph(self, codepoint); +} +MP_DEFINE_CONST_FUN_OBJ_2(displayio_builtinfont_get_glyph_obj, displayio_builtinfont_obj_get_glyph); + +STATIC const mp_rom_map_elem_t displayio_builtinfont_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_bitmap), MP_ROM_PTR(&displayio_builtinfont_bitmap_obj) }, + { MP_ROM_QSTR(MP_QSTR_get_bounding_box), MP_ROM_PTR(&displayio_builtinfont_get_bounding_box_obj) }, + { MP_ROM_QSTR(MP_QSTR_get_glyph), MP_ROM_PTR(&displayio_builtinfont_get_glyph_obj) }, +}; +STATIC MP_DEFINE_CONST_DICT(displayio_builtinfont_locals_dict, displayio_builtinfont_locals_dict_table); + +const mp_obj_type_t displayio_builtinfont_type = { + { &mp_type_type }, + .name = MP_QSTR_BuiltinFont, + .locals_dict = (mp_obj_dict_t*)&displayio_builtinfont_locals_dict, +}; diff --git a/shared-bindings/displayio/BuiltinFont.h b/shared-bindings/displayio/BuiltinFont.h new file mode 100644 index 0000000000..7660131585 --- /dev/null +++ b/shared-bindings/displayio/BuiltinFont.h @@ -0,0 +1,38 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BUILTINFONT_H +#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BUILTINFONT_H + +#include "shared-module/displayio/BuiltinFont.h" + +extern const mp_obj_type_t displayio_builtinfont_type; + +mp_obj_t common_hal_displayio_builtinfont_get_bitmap(const displayio_builtinfont_t *self); +mp_obj_t common_hal_displayio_builtinfont_get_bounding_box(const displayio_builtinfont_t *self); +mp_obj_t common_hal_displayio_builtinfont_get_glyph(const displayio_builtinfont_t *self, mp_uint_t codepoint); + +#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_BUILTINFONT_H diff --git a/shared-bindings/displayio/ColorConverter.c b/shared-bindings/displayio/ColorConverter.c index f146784e9d..561883810f 100644 --- a/shared-bindings/displayio/ColorConverter.c +++ b/shared-bindings/displayio/ColorConverter.c @@ -43,8 +43,6 @@ //| //| Converts one color format to another. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: ColorConverter() //| //| Create a ColorConverter object to convert color formats. Only supports RGB888 to RGB565 diff --git a/shared-bindings/displayio/Display.c b/shared-bindings/displayio/Display.c index adc121bc50..ca72e407a9 100644 --- a/shared-bindings/displayio/Display.c +++ b/shared-bindings/displayio/Display.c @@ -50,8 +50,6 @@ //| Most people should not use this class directly. Use a specific display driver instead that will //| contain the initialization sequence at minimum. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: Display(display_bus, init_sequence, *, width, height, colstart=0, rowstart=0, rotation=0, color_depth=16, set_column_command=0x2a, set_row_command=0x2b, write_ram_command=0x2c, set_vertical_scroll=0, backlight_pin=None) //| //| Create a Display object on the given display bus (`displayio.FourWire` or `displayio.ParallelBus`). diff --git a/shared-bindings/displayio/FourWire.c b/shared-bindings/displayio/FourWire.c index dee12eaf6f..56baa534b7 100644 --- a/shared-bindings/displayio/FourWire.c +++ b/shared-bindings/displayio/FourWire.c @@ -46,8 +46,6 @@ //| Manage updating a display over SPI four wire protocol in the background while Python code runs. //| It doesn't handle display initialization. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: FourWire(spi_bus, *, command, chip_select, reset) //| //| Create a FourWire object associated with the given pins. diff --git a/shared-bindings/displayio/Glyph.c b/shared-bindings/displayio/Glyph.c new file mode 100644 index 0000000000..1a4a75522b --- /dev/null +++ b/shared-bindings/displayio/Glyph.c @@ -0,0 +1,75 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "shared-bindings/displayio/Glyph.h" + +#include + +//| .. currentmodule:: displayio +//| +//| :class:`Glyph` -- Storage of glyph info +//| ========================================================================== +//| +//| .. class:: Glyph(bitmap, tile_index, width, height, dx, dy, shift_x, shift_y) +//| +//| Named tuple used to capture a single glyph and its attributes. +//| +//| :param displayio.Bitmap bitmap: the bitmap including the glyph +//| :param int tile_index: the tile index within the bitmap +//| :param int width: the width of the glyph's bitmap +//| :param int height: the height of the glyph's bitmap +//| :param int dx: x adjustment to the bitmap's position +//| :param int dy: y adjustment to the bitmap's position +//| :param int shift_x: the x difference to the next glyph +//| :param int shift_y: the y difference to the next glyph +//| +const mp_obj_namedtuple_type_t displayio_glyph_type = { + .base = { + .base = { + .type = &mp_type_type + }, + .name = MP_QSTR_Glyph, + .print = namedtuple_print, + .make_new = namedtuple_make_new, + .unary_op = mp_obj_tuple_unary_op, + .binary_op = mp_obj_tuple_binary_op, + .attr = namedtuple_attr, + .subscr = mp_obj_tuple_subscr, + .getiter = mp_obj_tuple_getiter, + .parent = &mp_type_tuple, + }, + .n_fields = 8, + .fields = { + MP_QSTR_bitmap, + MP_QSTR_tile_index, + MP_QSTR_width, + MP_QSTR_height, + MP_QSTR_dx, + MP_QSTR_dy, + MP_QSTR_shift_x, + MP_QSTR_shift_y + }, +}; diff --git a/shared-bindings/displayio/Glyph.h b/shared-bindings/displayio/Glyph.h new file mode 100644 index 0000000000..d26a4b9e4b --- /dev/null +++ b/shared-bindings/displayio/Glyph.h @@ -0,0 +1,34 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2019 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GLYPH_H +#define MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GLYPH_H + +#include "py/objnamedtuple.h" + +extern const mp_obj_namedtuple_type_t displayio_glyph_type; + +#endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GLYPH_H diff --git a/shared-bindings/displayio/Group.c b/shared-bindings/displayio/Group.c index 253812e002..421dc1ae59 100644 --- a/shared-bindings/displayio/Group.c +++ b/shared-bindings/displayio/Group.c @@ -41,57 +41,237 @@ //| //| Manage a group of sprites and groups and how they are inter-related. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. +//| .. class:: Group(*, max_size=4, scale=1) //| -//| .. class:: Group(*, max_size=4) -//| -//| Create a Group of a given size. +//| Create a Group of a given size and scale. Scale is in one dimension. For example, scale=2 +//| leads to a layer's pixel being 2x2 pixels when in the group. //| //| :param int max_size: The maximum group size. +//| :param int scale: Scale of layer pixels in one dimension. //| STATIC mp_obj_t displayio_group_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_max_size }; + enum { ARG_max_size, ARG_scale }; static const mp_arg_t allowed_args[] = { { MP_QSTR_max_size, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 4} }, + { MP_QSTR_scale, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 1} }, }; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); mp_int_t max_size = args[ARG_max_size].u_int; if (max_size < 1) { - mp_raise_ValueError(translate("Group must have size at least 1")); + mp_raise_ValueError_varg(translate("%q must be >= 1"), MP_QSTR_max_size); + } + + mp_int_t scale = args[ARG_scale].u_int; + if (scale < 1) { + mp_raise_ValueError_varg(translate("%q must be >= 1"), MP_QSTR_scale); } displayio_group_t *self = m_new_obj(displayio_group_t); self->base.type = &displayio_group_type; - common_hal_displayio_group_construct(self, max_size); + common_hal_displayio_group_construct(self, max_size, scale); return MP_OBJ_FROM_PTR(self); } +// Helper to ensure we have the native super class instead of a subclass. +static displayio_group_t* native_group(mp_obj_t group_obj) { + mp_obj_t native_group = mp_instance_cast_to_native_base(group_obj, &displayio_group_type); + return MP_OBJ_TO_PTR(native_group); +} + +//| .. attribute:: scale +//| +//| Scales each pixel within the Group in both directions. For example, when scale=2 each pixel +//| will be represented by 2x2 pixels. +//| +STATIC mp_obj_t displayio_group_obj_get_scale(mp_obj_t self_in) { + displayio_group_t *self = native_group(self_in); + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_scale(self)); +} +MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_scale_obj, displayio_group_obj_get_scale); + +STATIC mp_obj_t displayio_group_obj_set_scale(mp_obj_t self_in, mp_obj_t scale_obj) { + displayio_group_t *self = native_group(self_in); + + mp_int_t scale = mp_obj_get_int(scale_obj); + if (scale < 1) { + mp_raise_ValueError_varg(translate("%q must be >= 1"), MP_QSTR_scale); + } + common_hal_displayio_group_set_scale(self, scale); + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_set_scale_obj, displayio_group_obj_set_scale); + +const mp_obj_property_t displayio_group_scale_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_group_get_scale_obj, + (mp_obj_t)&displayio_group_set_scale_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + +//| .. attribute:: x +//| +//| X position of the Group in the parent. +//| +STATIC mp_obj_t displayio_group_obj_get_x(mp_obj_t self_in) { + displayio_group_t *self = native_group(self_in); + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_x(self)); +} +MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_x_obj, displayio_group_obj_get_x); + +STATIC mp_obj_t displayio_group_obj_set_x(mp_obj_t self_in, mp_obj_t x_obj) { + displayio_group_t *self = native_group(self_in); + + mp_int_t x = mp_obj_get_int(x_obj); + common_hal_displayio_group_set_x(self, x); + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_set_x_obj, displayio_group_obj_set_x); + +const mp_obj_property_t displayio_group_x_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_group_get_x_obj, + (mp_obj_t)&displayio_group_set_x_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + +//| .. attribute:: y +//| +//| Y position of the Group in the parent. +//| +STATIC mp_obj_t displayio_group_obj_get_y(mp_obj_t self_in) { + displayio_group_t *self = native_group(self_in); + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get_y(self)); +} +MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_get_y_obj, displayio_group_obj_get_y); + +STATIC mp_obj_t displayio_group_obj_set_y(mp_obj_t self_in, mp_obj_t y_obj) { + displayio_group_t *self = native_group(self_in); + + mp_int_t y = mp_obj_get_int(y_obj); + common_hal_displayio_group_set_y(self, y); + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_set_y_obj, displayio_group_obj_set_y); + +const mp_obj_property_t displayio_group_y_obj = { + .base.type = &mp_type_property, + .proxy = {(mp_obj_t)&displayio_group_get_y_obj, + (mp_obj_t)&displayio_group_set_y_obj, + (mp_obj_t)&mp_const_none_obj}, +}; + //| .. method:: append(layer) //| //| Append a layer to the group. It will be drawn above other layers. //| STATIC mp_obj_t displayio_group_obj_append(mp_obj_t self_in, mp_obj_t layer) { displayio_group_t *self = MP_OBJ_TO_PTR(self_in); - common_hal_displayio_group_append(self, layer); + common_hal_displayio_group_insert(self, common_hal_displayio_group_get_len(self), layer); return mp_const_none; } MP_DEFINE_CONST_FUN_OBJ_2(displayio_group_append_obj, displayio_group_obj_append); -//| .. method:: pop() +//| .. method:: insert(index, layer) //| -//| Remove the last item and return it. +//| Insert a layer into the group. //| -STATIC mp_obj_t displayio_group_obj_pop(mp_obj_t self_in) { +STATIC mp_obj_t displayio_group_obj_insert(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t layer) { displayio_group_t *self = MP_OBJ_TO_PTR(self_in); - return common_hal_displayio_group_pop(self); + size_t index = mp_get_index(&displayio_group_type, common_hal_displayio_group_get_len(self), index_obj, false); + common_hal_displayio_group_insert(self, index, layer); + return mp_const_none; +} +MP_DEFINE_CONST_FUN_OBJ_3(displayio_group_insert_obj, displayio_group_obj_insert); + +//| .. method:: pop(i=-1) +//| +//| Remove the ith item and return it. +//| +STATIC mp_obj_t displayio_group_obj_pop(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { + enum { ARG_i }; + static const mp_arg_t allowed_args[] = { + { MP_QSTR_i, MP_ARG_INT, {.u_int = -1} }, + }; + mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; + mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); + + displayio_group_t *self = MP_OBJ_TO_PTR(pos_args[0]); + + size_t index = mp_get_index(&displayio_group_type, + common_hal_displayio_group_get_len(self), + MP_OBJ_NEW_SMALL_INT(args[ARG_i].u_int), + false); + return common_hal_displayio_group_pop(self, index); +} +MP_DEFINE_CONST_FUN_OBJ_KW(displayio_group_pop_obj, 1, displayio_group_obj_pop); + +//| .. method:: __len__() +//| +//| Returns the number of layers in a Group +//| +STATIC mp_obj_t group_unary_op(mp_unary_op_t op, mp_obj_t self_in) { + displayio_group_t *self = MP_OBJ_TO_PTR(self_in); + uint16_t len = common_hal_displayio_group_get_len(self); + switch (op) { + case MP_UNARY_OP_BOOL: return mp_obj_new_bool(len != 0); + case MP_UNARY_OP_LEN: return MP_OBJ_NEW_SMALL_INT(len); + default: return MP_OBJ_NULL; // op not supported + } +} + +//| .. method:: __getitem__(index) +//| +//| Returns the value at the given index. +//| +//| This allows you to:: +//| +//| print(group[0]) +//| +//| .. method:: __setitem__(index, value) +//| +//| Sets the value at the given index. +//| +//| This allows you to:: +//| +//| group[0] = sprite +//| +//| .. method:: __delitem__(index) +//| +//| Deletes the value at the given index. +//| +//| This allows you to:: +//| +//| del group[0] +//| +STATIC mp_obj_t group_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t value) { + displayio_group_t *self = MP_OBJ_TO_PTR(self_in); + + if (MP_OBJ_IS_TYPE(index_obj, &mp_type_slice)) { + mp_raise_NotImplementedError(translate("Slices not supported")); + } else { + size_t index = mp_get_index(&displayio_group_type, common_hal_displayio_group_get_len(self), index_obj, false); + + if (value == MP_OBJ_SENTINEL) { + // load + return MP_OBJ_NEW_SMALL_INT(common_hal_displayio_group_get(self, index)); + } else if (value == mp_const_none) { + common_hal_displayio_group_pop(self, index); + } else { + common_hal_displayio_group_set(self, index, value); + } + } + return mp_const_none; } -MP_DEFINE_CONST_FUN_OBJ_1(displayio_group_pop_obj, displayio_group_obj_pop); STATIC const mp_rom_map_elem_t displayio_group_locals_dict_table[] = { + { MP_ROM_QSTR(MP_QSTR_scale), MP_ROM_PTR(&displayio_group_scale_obj) }, + { MP_ROM_QSTR(MP_QSTR_x), MP_ROM_PTR(&displayio_group_x_obj) }, + { MP_ROM_QSTR(MP_QSTR_y), MP_ROM_PTR(&displayio_group_y_obj) }, { MP_ROM_QSTR(MP_QSTR_append), MP_ROM_PTR(&displayio_group_append_obj) }, + { MP_ROM_QSTR(MP_QSTR_insert), MP_ROM_PTR(&displayio_group_insert_obj) }, { MP_ROM_QSTR(MP_QSTR_pop), MP_ROM_PTR(&displayio_group_pop_obj) }, }; STATIC MP_DEFINE_CONST_DICT(displayio_group_locals_dict, displayio_group_locals_dict_table); @@ -100,5 +280,7 @@ const mp_obj_type_t displayio_group_type = { { &mp_type_type }, .name = MP_QSTR_Group, .make_new = displayio_group_make_new, + .subscr = group_subscr, + .unary_op = group_unary_op, .locals_dict = (mp_obj_dict_t*)&displayio_group_locals_dict, }; diff --git a/shared-bindings/displayio/Group.h b/shared-bindings/displayio/Group.h index a85098e6d1..d326dbf4de 100644 --- a/shared-bindings/displayio/Group.h +++ b/shared-bindings/displayio/Group.h @@ -32,8 +32,18 @@ extern const mp_obj_type_t displayio_group_type; -void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size); +void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size, uint32_t scale); +uint32_t common_hal_displayio_group_get_scale(displayio_group_t* self); +void common_hal_displayio_group_set_scale(displayio_group_t* self, uint32_t scale); +mp_int_t common_hal_displayio_group_get_x(displayio_group_t* self); +void common_hal_displayio_group_set_x(displayio_group_t* self, mp_int_t x); +mp_int_t common_hal_displayio_group_get_y(displayio_group_t* self); +void common_hal_displayio_group_set_y(displayio_group_t* self, mp_int_t y); void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer); -mp_obj_t common_hal_displayio_group_pop(displayio_group_t* self); +void common_hal_displayio_group_insert(displayio_group_t* self, size_t index, mp_obj_t layer); +size_t common_hal_displayio_group_get_len(displayio_group_t* self); +mp_obj_t common_hal_displayio_group_pop(displayio_group_t* self, size_t index); +mp_obj_t common_hal_displayio_group_get(displayio_group_t* self, size_t index); +void common_hal_displayio_group_set(displayio_group_t* self, size_t index, mp_obj_t layer); #endif // MICROPY_INCLUDED_SHARED_BINDINGS_DISPLAYIO_GROUP_H diff --git a/shared-bindings/displayio/OnDiskBitmap.c b/shared-bindings/displayio/OnDiskBitmap.c index d6d3b98625..8b75eb00c4 100644 --- a/shared-bindings/displayio/OnDiskBitmap.c +++ b/shared-bindings/displayio/OnDiskBitmap.c @@ -42,8 +42,6 @@ //| much slower pixel load times. These load times may result in frame tearing where only part of //| the image is visible. //| -//| .. warning:: This will likely be changed before 4.0.0. Consider it very experimental. -//| //| It's easiest to use on a board with a built in display such as the `Hallowing M0 Express //| `_. //| diff --git a/shared-bindings/displayio/Palette.c b/shared-bindings/displayio/Palette.c index c412674e10..799d42bef8 100644 --- a/shared-bindings/displayio/Palette.c +++ b/shared-bindings/displayio/Palette.c @@ -44,8 +44,6 @@ //| Map a pixel palette_index to a full color. Colors are transformed to the display's format internally to //| save memory. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: Palette(color_count) //| //| Create a Palette object to store a set number of colors. diff --git a/shared-bindings/displayio/ParallelBus.c b/shared-bindings/displayio/ParallelBus.c index abae114e2b..a54a844719 100644 --- a/shared-bindings/displayio/ParallelBus.c +++ b/shared-bindings/displayio/ParallelBus.c @@ -45,8 +45,6 @@ //| Manage updating a display over SPI four wire protocol in the background while Python code runs. //| It doesn't handle display initialization. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: ParallelBus(*, data0, command, chip_select, write, read, reset) //| //| Create a ParallelBus object associated with the given pins. The bus is inferred from data0 diff --git a/shared-bindings/displayio/TileGrid.c b/shared-bindings/displayio/TileGrid.c index d0be43fbf6..eeacd1918c 100644 --- a/shared-bindings/displayio/TileGrid.c +++ b/shared-bindings/displayio/TileGrid.c @@ -60,8 +60,6 @@ static void unpack_position(mp_obj_t position_obj, int16_t* x, int16_t* y) { //| //| A single tile grid is also known as a Sprite. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| .. class:: TileGrid(bitmap, *, pixel_shader, position, width=1, height=1, tile_width=None, tile_height=None, default_tile=0) //| //| Create a TileGrid object. The bitmap is source for 2d pixels. The pixel_shader is used to diff --git a/shared-bindings/displayio/__init__.c b/shared-bindings/displayio/__init__.c index df7162cf1e..1ee7550140 100644 --- a/shared-bindings/displayio/__init__.c +++ b/shared-bindings/displayio/__init__.c @@ -31,9 +31,11 @@ #include "shared-bindings/displayio/__init__.h" #include "shared-bindings/displayio/Bitmap.h" +#include "shared-bindings/displayio/BuiltinFont.h" #include "shared-bindings/displayio/ColorConverter.h" #include "shared-bindings/displayio/Display.h" #include "shared-bindings/displayio/FourWire.h" +#include "shared-bindings/displayio/Glyph.h" #include "shared-bindings/displayio/Group.h" #include "shared-bindings/displayio/OnDiskBitmap.h" #include "shared-bindings/displayio/Palette.h" @@ -51,17 +53,17 @@ //| The `displayio` module contains classes to manage display output //| including synchronizing with refresh rates and partial updating. //| -//| .. warning:: This will be changed before 4.0.0. Consider it very experimental. -//| //| Libraries //| //| .. toctree:: //| :maxdepth: 3 //| //| Bitmap +//| BuiltinFont //| ColorConverter //| Display //| FourWire +//| Glyph //| Group //| OnDiskBitmap //| Palette @@ -88,8 +90,10 @@ MP_DEFINE_CONST_FUN_OBJ_0(displayio_release_displays_obj, displayio_release_disp STATIC const mp_rom_map_elem_t displayio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_displayio) }, { MP_ROM_QSTR(MP_QSTR_Bitmap), MP_ROM_PTR(&displayio_bitmap_type) }, + { MP_ROM_QSTR(MP_QSTR_BuiltinFont), MP_ROM_PTR(&displayio_builtinfont_type) }, { MP_ROM_QSTR(MP_QSTR_ColorConverter), MP_ROM_PTR(&displayio_colorconverter_type) }, { MP_ROM_QSTR(MP_QSTR_Display), MP_ROM_PTR(&displayio_display_type) }, + { MP_ROM_QSTR(MP_QSTR_Glyph), MP_ROM_PTR(&displayio_glyph_type) }, { MP_ROM_QSTR(MP_QSTR_Group), MP_ROM_PTR(&displayio_group_type) }, { MP_ROM_QSTR(MP_QSTR_OnDiskBitmap), MP_ROM_PTR(&displayio_ondiskbitmap_type) }, { MP_ROM_QSTR(MP_QSTR_Palette), MP_ROM_PTR(&displayio_palette_type) }, diff --git a/shared-bindings/pulseio/PulseIn.c b/shared-bindings/pulseio/PulseIn.c index d30abf28fa..426ac4384e 100644 --- a/shared-bindings/pulseio/PulseIn.c +++ b/shared-bindings/pulseio/PulseIn.c @@ -257,7 +257,7 @@ STATIC mp_obj_t pulsein_unary_op(mp_unary_op_t op, mp_obj_t self_in) { } } -//| .. method:: __get__(index) +//| .. method:: __getitem__(index) //| //| Returns the value at the given index or values in slice. //| @@ -277,12 +277,7 @@ STATIC mp_obj_t pulsein_subscr(mp_obj_t self_in, mp_obj_t index_obj, mp_obj_t va if (MP_OBJ_IS_TYPE(index_obj, &mp_type_slice)) { mp_raise_NotImplementedError(translate("Slices not supported")); } else { - uint16_t index = 0; - if (MP_OBJ_IS_SMALL_INT(index_obj)) { - index = MP_OBJ_SMALL_INT_VALUE(index_obj); - } else { - mp_raise_TypeError(translate("index must be int")); - } + size_t index = mp_get_index(&pulseio_pulsein_type, common_hal_pulseio_pulsein_get_len(self), index_obj, false); if (value == MP_OBJ_SENTINEL) { // load return MP_OBJ_NEW_SMALL_INT(common_hal_pulseio_pulsein_get_item(self, index)); diff --git a/shared-bindings/terminalio/Terminal.c b/shared-bindings/terminalio/Terminal.c index 67c7ead57f..e3822d8583 100644 --- a/shared-bindings/terminalio/Terminal.c +++ b/shared-bindings/terminalio/Terminal.c @@ -34,6 +34,7 @@ #include "py/objstr.h" #include "py/runtime.h" #include "py/stream.h" +#include "shared-bindings/displayio/BuiltinFont.h" #include "supervisor/shared/translate.h" @@ -42,18 +43,17 @@ //| :class:`Terminal` -- display a character stream with a TileGrid //| ================================================================ //| -//| .. class:: Terminal(tilegrid, *, unicode_characters="") +//| .. class:: Terminal(tilegrid, font) //| -//| Terminal manages tile indices and cursor position based on VT100 commands. Visible ASCII -//| characters are mapped to the first 94 tile indices by substracting 0x20 from characters value. -//| Unicode characters are mapped based on unicode_characters starting at index 94. +//| Terminal manages tile indices and cursor position based on VT100 commands. The font should be +//| a `displayio.BuiltinFont` and the TileGrid's bitmap should match the font's bitmap. //| STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) { - enum { ARG_tilegrid, ARG_unicode_characters }; + enum { ARG_tilegrid, ARG_font }; static const mp_arg_t allowed_args[] = { { MP_QSTR_tilegrid, MP_ARG_REQUIRED | MP_ARG_OBJ }, - { MP_QSTR_unicode_characters, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_obj = mp_const_none} }, + { MP_QSTR_font, MP_ARG_REQUIRED | MP_ARG_OBJ }, }; mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)]; mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args); @@ -63,15 +63,13 @@ STATIC mp_obj_t terminalio_terminal_make_new(const mp_obj_type_t *type, size_t n mp_raise_TypeError_varg(translate("Expected a %q"), displayio_tilegrid_type.name); } - mp_obj_t unicode_characters_obj = args[ARG_unicode_characters].u_obj; - if (MP_OBJ_IS_STR(unicode_characters_obj)) { - mp_raise_TypeError(translate("unicode_characters must be a string")); + mp_obj_t font = args[ARG_font].u_obj; + if (!MP_OBJ_IS_TYPE(font, &displayio_builtinfont_type)) { + mp_raise_TypeError_varg(translate("Expected a %q"), displayio_builtinfont_type.name); } - - GET_STR_DATA_LEN(unicode_characters_obj, unicode_characters, unicode_characters_len); terminalio_terminal_obj_t *self = m_new_obj(terminalio_terminal_obj_t); self->base.type = &terminalio_terminal_type; - common_hal_terminalio_terminal_construct(self, MP_OBJ_TO_PTR(tilegrid), unicode_characters, unicode_characters_len); + common_hal_terminalio_terminal_construct(self, MP_OBJ_TO_PTR(tilegrid), MP_OBJ_TO_PTR(font)); return MP_OBJ_FROM_PTR(self); } diff --git a/shared-bindings/terminalio/Terminal.h b/shared-bindings/terminalio/Terminal.h index 43912243ae..a5dadac89c 100644 --- a/shared-bindings/terminalio/Terminal.h +++ b/shared-bindings/terminalio/Terminal.h @@ -34,7 +34,7 @@ extern const mp_obj_type_t terminalio_terminal_type; extern void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, - displayio_tilegrid_t* tilegrid, const byte* unicode_characters, size_t unicode_characters_len); + displayio_tilegrid_t* tilegrid, const displayio_builtinfont_t* font); // Write characters. len is in characters NOT bytes! extern size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, diff --git a/shared-bindings/terminalio/__init__.c b/shared-bindings/terminalio/__init__.c index 482cb78e6f..a9fe20f30b 100644 --- a/shared-bindings/terminalio/__init__.c +++ b/shared-bindings/terminalio/__init__.c @@ -31,6 +31,7 @@ #include "shared-bindings/terminalio/__init__.h" #include "shared-bindings/terminalio/Terminal.h" +#include "supervisor/shared/display.h" #include "py/runtime.h" @@ -40,7 +41,8 @@ //| .. module:: terminalio //| :synopsis: Displays text in a TileGrid //| -//| The `terminalio` module contains classes to display a character stream on a display +//| The `terminalio` module contains classes to display a character stream on a display. The built +//| in font is available as ``terminalio.FONT``. //| //| Libraries //| @@ -53,6 +55,7 @@ STATIC const mp_rom_map_elem_t terminalio_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_terminalio) }, { MP_ROM_QSTR(MP_QSTR_Terminal), MP_OBJ_FROM_PTR(&terminalio_terminal_type) }, + { MP_ROM_QSTR(MP_QSTR_FONT), MP_ROM_PTR(&supervisor_terminal_font) }, }; diff --git a/shared-bindings/usb_hid/Device.c b/shared-bindings/usb_hid/Device.c index f0c8795cc4..b1097fb24b 100644 --- a/shared-bindings/usb_hid/Device.c +++ b/shared-bindings/usb_hid/Device.c @@ -45,11 +45,6 @@ //| //| Not currently dynamically supported. //| -STATIC mp_obj_t usb_hid_device_make_new(const mp_obj_type_t *type, - mp_uint_t n_args, const mp_obj_t *args, mp_map_t *kw_args) { - return mp_const_none; -} - //| .. method:: send_report(buf) //| //| Send a HID report. @@ -114,6 +109,5 @@ STATIC MP_DEFINE_CONST_DICT(usb_hid_device_locals_dict, usb_hid_device_locals_di const mp_obj_type_t usb_hid_device_type = { { &mp_type_type }, .name = MP_QSTR_Device, - .make_new = usb_hid_device_make_new, .locals_dict = (mp_obj_t)&usb_hid_device_locals_dict, }; diff --git a/shared-module/displayio/Bitmap.c b/shared-module/displayio/Bitmap.c index addc341a7e..2b2c70ab68 100644 --- a/shared-module/displayio/Bitmap.c +++ b/shared-module/displayio/Bitmap.c @@ -42,7 +42,7 @@ void common_hal_displayio_bitmap_construct(displayio_bitmap_t *self, uint32_t wi self->width = width; self->height = height; self->data = m_malloc(self->stride * height * sizeof(uint32_t), false); - + self->read_only = false; self->bits_per_value = bits_per_value; if (bits_per_value > 8) { @@ -64,6 +64,18 @@ void common_hal_displayio_bitmap_construct(displayio_bitmap_t *self, uint32_t wi self->bitmask = (1 << bits_per_value) - 1; } +uint16_t common_hal_displayio_bitmap_get_height(displayio_bitmap_t *self) { + return self->height; +} + +uint16_t common_hal_displayio_bitmap_get_width(displayio_bitmap_t *self) { + return self->width; +} + +uint32_t common_hal_displayio_bitmap_get_bits_per_value(displayio_bitmap_t *self) { + return self->bits_per_value; +} + void common_hal_displayio_bitmap_load_row(displayio_bitmap_t *self, uint16_t y, uint8_t* data, uint16_t len) { if (len != self->stride * sizeof(uint32_t)) { mp_raise_ValueError(translate("row must be packed and word aligned")); @@ -85,6 +97,7 @@ void common_hal_displayio_bitmap_load_row(displayio_bitmap_t *self, uint16_t y, row_value++; } } + uint32_t common_hal_displayio_bitmap_get_pixel(displayio_bitmap_t *self, int16_t x, int16_t y) { if (x >= self->width || x < 0 || y >= self->height || y < 0) { return 0; @@ -99,3 +112,21 @@ uint32_t common_hal_displayio_bitmap_get_pixel(displayio_bitmap_t *self, int16_t return self->data[row_start + x * bytes_per_value]; } } + +void common_hal_displayio_bitmap_set_pixel(displayio_bitmap_t *self, int16_t x, int16_t y, uint32_t value) { + if (self->read_only) { + mp_raise_RuntimeError(translate("Read-only object")); + } + int32_t row_start = y * self->stride; + if (self->bits_per_value < 8) { + uint32_t bit_position = (32 - ((x & self->x_mask) + 1) * self->bits_per_value); + uint32_t index = row_start + (x >> self->x_shift); + uint32_t word = self->data[index]; + word &= ~(self->bitmask << bit_position); + word |= (value & self->bitmask) << bit_position; + self->data[index] = word; + } else { + uint32_t bytes_per_value = self->bits_per_value / 8; + self->data[row_start + x * bytes_per_value] = value; + } +} diff --git a/shared-module/displayio/Bitmap.h b/shared-module/displayio/Bitmap.h index 781a4d12a3..485b57daf2 100644 --- a/shared-module/displayio/Bitmap.h +++ b/shared-module/displayio/Bitmap.h @@ -42,6 +42,7 @@ typedef struct { uint8_t x_shift; uint8_t x_mask; uint16_t bitmask; + bool read_only; } displayio_bitmap_t; #endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BITMAP_H diff --git a/shared-module/displayio/BuiltinFont.c b/shared-module/displayio/BuiltinFont.c new file mode 100644 index 0000000000..ee69b423c6 --- /dev/null +++ b/shared-module/displayio/BuiltinFont.c @@ -0,0 +1,79 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "shared-bindings/displayio/BuiltinFont.h" + + +#include "shared-bindings/displayio/Glyph.h" + +#include "py/objnamedtuple.h" + +mp_obj_t common_hal_displayio_builtinfont_get_bitmap(const displayio_builtinfont_t *self) { + return MP_OBJ_FROM_PTR(self->bitmap); +} + +mp_obj_t common_hal_displayio_builtinfont_get_bounding_box(const displayio_builtinfont_t *self) { + mp_obj_t *items = m_new(mp_obj_t, 2); + items[0] = MP_OBJ_NEW_SMALL_INT(self->width); + items[1] = MP_OBJ_NEW_SMALL_INT(self->height); + return mp_obj_new_tuple(2, items); +} + +uint8_t displayio_builtinfont_get_glyph_index(const displayio_builtinfont_t *self, mp_uint_t codepoint) { + if (codepoint >= 0x20 && codepoint <= 0x7e) { + return codepoint - 0x20; + } + // Do a linear search of the mapping for unicode. + const byte* j = self->unicode_characters; + uint8_t k = 0; + while (j < self->unicode_characters + self->unicode_characters_len) { + unichar potential_c = utf8_get_char(j); + j = utf8_next_char(j); + if (codepoint == potential_c) { + return 0x7f - 0x20 + k; + } + k++; + } + return 0xff; +} + +mp_obj_t common_hal_displayio_builtinfont_get_glyph(const displayio_builtinfont_t *self, mp_uint_t codepoint) { + uint8_t glyph_index = displayio_builtinfont_get_glyph_index(self, codepoint); + if (glyph_index == 0xff) { + return mp_const_none; + } + mp_obj_t field_values[8] = { + MP_OBJ_FROM_PTR(self->bitmap), + MP_OBJ_NEW_SMALL_INT(glyph_index), + MP_OBJ_NEW_SMALL_INT(self->width), + MP_OBJ_NEW_SMALL_INT(self->height), + MP_OBJ_NEW_SMALL_INT(0), + MP_OBJ_NEW_SMALL_INT(0), + MP_OBJ_NEW_SMALL_INT(self->width), + MP_OBJ_NEW_SMALL_INT(0) + }; + return namedtuple_make_new((const mp_obj_type_t*) &displayio_glyph_type, 8, field_values, NULL); +} diff --git a/shared-module/displayio/BuiltinFont.h b/shared-module/displayio/BuiltinFont.h new file mode 100644 index 0000000000..ac69ef9da3 --- /dev/null +++ b/shared-module/displayio/BuiltinFont.h @@ -0,0 +1,47 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2018 Scott Shawcroft for Adafruit Industries + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BUILTINFONT_H +#define MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BUILTINFONT_H + +#include +#include + +#include "py/obj.h" +#include "shared-bindings/displayio/Bitmap.h" + +typedef struct { + mp_obj_base_t base; + const displayio_bitmap_t* bitmap; + uint8_t width; + uint8_t height; + const byte* unicode_characters; + uint16_t unicode_characters_len; +} displayio_builtinfont_t; + +uint8_t displayio_builtinfont_get_glyph_index(const displayio_builtinfont_t *self, mp_uint_t codepoint); + +#endif // MICROPY_INCLUDED_SHARED_MODULE_DISPLAYIO_BUILTINFONT_H diff --git a/shared-module/displayio/Group.c b/shared-module/displayio/Group.c index 95043e4f3c..adaad15057 100644 --- a/shared-module/displayio/Group.c +++ b/shared-module/displayio/Group.c @@ -29,12 +29,39 @@ #include "py/runtime.h" #include "shared-bindings/displayio/TileGrid.h" -void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size) { +void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size, uint32_t scale) { mp_obj_t* children = m_new(mp_obj_t, max_size); - displayio_group_construct(self, children, max_size); + displayio_group_construct(self, children, max_size, scale); } -void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer) { +uint32_t common_hal_displayio_group_get_scale(displayio_group_t* self) { + return self->scale; +} + +void common_hal_displayio_group_set_scale(displayio_group_t* self, uint32_t scale) { + self->needs_refresh = self->scale != scale; + self->scale = scale; +} + +mp_int_t common_hal_displayio_group_get_x(displayio_group_t* self) { + return self->x; +} + +void common_hal_displayio_group_set_x(displayio_group_t* self, mp_int_t x) { + self->needs_refresh = self->x != x; + self->x = x; +} + +mp_int_t common_hal_displayio_group_get_y(displayio_group_t* self) { + return self->y; +} + +void common_hal_displayio_group_set_y(displayio_group_t* self, mp_int_t y) { + self->needs_refresh = self->y != y; + self->y = y; +} + +void common_hal_displayio_group_insert(displayio_group_t* self, size_t index, mp_obj_t layer) { if (self->size == self->max_size) { mp_raise_RuntimeError(translate("Group full")); } @@ -45,29 +72,47 @@ void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer) if (native_layer == MP_OBJ_NULL) { mp_raise_ValueError(translate("Layer must be a Group or TileGrid subclass.")); } - self->children[self->size] = layer; + // Shift everything right. + for (size_t i = index; i < self->size; i++) { + self->children[i + 1] = self->children[i]; + } + self->children[index] = native_layer; self->size++; self->needs_refresh = true; } -mp_obj_t common_hal_displayio_group_pop(displayio_group_t* self) { - if (self->size == 0) { - mp_raise_IndexError(translate("Group empty")); - } +mp_obj_t common_hal_displayio_group_pop(displayio_group_t* self, size_t index) { self->size--; - mp_obj_t item = self->children[self->size]; + mp_obj_t item = self->children[index]; + // Shift everything left. + for (size_t i = index; i < self->size; i++) { + self->children[i] = self->children[i + 1]; + } self->children[self->size] = NULL; self->needs_refresh = true; return item; } -void displayio_group_construct(displayio_group_t* self, mp_obj_t* child_array, uint32_t max_size) { +size_t common_hal_displayio_group_get_len(displayio_group_t* self) { + return self->size; +} + +mp_obj_t common_hal_displayio_group_get(displayio_group_t* self, size_t index) { + return self->children[index]; +} + +void common_hal_displayio_group_set(displayio_group_t* self, size_t index, mp_obj_t layer) { + self->children[index] = layer; + self->needs_refresh = true; +} + +void displayio_group_construct(displayio_group_t* self, mp_obj_t* child_array, uint32_t max_size, uint32_t scale) { self->x = 0; self->y = 0; self->children = child_array; self->max_size = max_size; self->needs_refresh = false; - self->scale = 1; + self->scale = scale; } bool displayio_group_get_pixel(displayio_group_t *self, int16_t x, int16_t y, uint16_t* pixel) { @@ -86,7 +131,6 @@ bool displayio_group_get_pixel(displayio_group_t *self, int16_t x, int16_t y, ui return true; } } - // TODO: Tiled layer } return false; } diff --git a/shared-module/displayio/Group.h b/shared-module/displayio/Group.h index 60f573ff6f..265cb4e22b 100644 --- a/shared-module/displayio/Group.h +++ b/shared-module/displayio/Group.h @@ -43,11 +43,7 @@ typedef struct { bool needs_refresh; } displayio_group_t; - -void common_hal_displayio_group_construct(displayio_group_t* self, uint32_t max_size); -void common_hal_displayio_group_append(displayio_group_t* self, mp_obj_t layer); - -void displayio_group_construct(displayio_group_t* self, mp_obj_t* child_array, uint32_t max_size); +void displayio_group_construct(displayio_group_t* self, mp_obj_t* child_array, uint32_t max_size, uint32_t scale); bool displayio_group_get_pixel(displayio_group_t *group, int16_t x, int16_t y, uint16_t *pixel); bool displayio_group_needs_refresh(displayio_group_t *self); void displayio_group_finish_refresh(displayio_group_t *self); diff --git a/shared-module/displayio/TileGrid.c b/shared-module/displayio/TileGrid.c index b90603afe5..e4f40a5f76 100644 --- a/shared-module/displayio/TileGrid.c +++ b/shared-module/displayio/TileGrid.c @@ -40,9 +40,17 @@ void common_hal_displayio_tilegrid_construct(displayio_tilegrid_t *self, mp_obj_ // Sprites will only have one tile so save a little memory by inlining values in the pointer. uint8_t inline_tiles = sizeof(uint8_t*); if (total_tiles <= inline_tiles) { + self->tiles = 0; + // Pack values into the pointer since there are only a few. + for (uint32_t i = 0; i < inline_tiles; i++) { + ((uint8_t*) &self->tiles)[i] = default_tile; + } self->inline_tiles = true; } else { self->tiles = (uint8_t*) m_malloc(total_tiles, false); + for (uint32_t i = 0; i < total_tiles; i++) { + self->tiles[i] = default_tile; + } self->inline_tiles = false; } self->bitmap_width_in_tiles = bitmap_width_in_tiles; diff --git a/shared-module/terminalio/Terminal.c b/shared-module/terminalio/Terminal.c index 6734fa30eb..85bbee2931 100644 --- a/shared-module/terminalio/Terminal.c +++ b/shared-module/terminalio/Terminal.c @@ -27,14 +27,14 @@ #include "shared-module/terminalio/Terminal.h" #include "shared-module/displayio/__init__.h" +#include "shared-module/displayio/BuiltinFont.h" #include "shared-bindings/displayio/TileGrid.h" -void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t* tilegrid, const uint8_t* unicode_characters, size_t unicode_characters_len) { +void common_hal_terminalio_terminal_construct(terminalio_terminal_obj_t *self, displayio_tilegrid_t* tilegrid, const displayio_builtinfont_t* font) { self->cursor_x = 0; self->cursor_y = 0; + self->font = font; self->tilegrid = tilegrid; - self->unicode_characters = unicode_characters; - self->unicode_characters_len = unicode_characters_len; self->first_row = 0; } @@ -47,10 +47,10 @@ size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, con // Always handle ASCII. if (c < 128) { if (c >= 0x20 && c <= 0x7e) { - common_hal_displayio_textgrid_set_tile(self->tilegrid, self->cursor_x, self->cursor_y, c - 0x20); + uint8_t tile_index = displayio_builtinfont_get_glyph_index(self->font, c); + common_hal_displayio_textgrid_set_tile(self->tilegrid, self->cursor_x, self->cursor_y, tile_index); self->cursor_x++; - } - if (c == '\r') { + } else if (c == '\r') { self->cursor_x = 0; } else if (c == '\n') { self->cursor_y++; @@ -76,6 +76,7 @@ size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, con n = n * 10 + (i[j] - '0'); } else { c = i[j]; + break; } } if (c == 'D') { @@ -84,23 +85,18 @@ size_t common_hal_terminalio_terminal_write(terminalio_terminal_obj_t *self, con } else { self->cursor_x -= n; } - i += j; } + i += j + 1; + continue; } } } } else { - // Do a linear search of the mapping for unicode. - const byte* j = self->unicode_characters; - uint8_t k = 0; - while (j < self->unicode_characters + self->unicode_characters_len) { - unichar potential_c = utf8_get_char(j); - j = utf8_next_char(j); - if (c == potential_c) { - common_hal_displayio_textgrid_set_tile(self->tilegrid, self->cursor_x, self->cursor_y, 0x7f - 0x20 + k); - self->cursor_x++; - break; - } + uint8_t tile_index = displayio_builtinfont_get_glyph_index(self->font, c); + if (tile_index != 0xff) { + common_hal_displayio_textgrid_set_tile(self->tilegrid, self->cursor_x, self->cursor_y, tile_index); + self->cursor_x++; + } } if (self->cursor_x >= self->tilegrid->width_in_tiles) { diff --git a/shared-module/terminalio/Terminal.h b/shared-module/terminalio/Terminal.h index fe9dcf0c41..145b42f3f8 100644 --- a/shared-module/terminalio/Terminal.h +++ b/shared-module/terminalio/Terminal.h @@ -31,15 +31,15 @@ #include #include "py/obj.h" +#include "shared-module/displayio/BuiltinFont.h" #include "shared-module/displayio/TileGrid.h" typedef struct { mp_obj_base_t base; + const displayio_builtinfont_t* font; uint16_t cursor_x; uint16_t cursor_y; displayio_tilegrid_t* tilegrid; - const byte* unicode_characters; - uint16_t unicode_characters_len; uint16_t first_row; } terminalio_terminal_obj_t; diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c index 2652630bed..679354473c 100644 --- a/supervisor/shared/display.c +++ b/supervisor/shared/display.c @@ -134,7 +134,8 @@ displayio_bitmap_t blinka_bitmap = { .bits_per_value = 4, .x_shift = 3, .x_mask = 0x7, - .bitmask = 0xf + .bitmask = 0xf, + .read_only = true }; uint32_t blinka_transparency[1] = {0x80000000}; diff --git a/supervisor/shared/display.h b/supervisor/shared/display.h index cca9079160..cb321e85e4 100644 --- a/supervisor/shared/display.h +++ b/supervisor/shared/display.h @@ -27,6 +27,7 @@ #ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H #define MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H +#include "shared-bindings/displayio/BuiltinFont.h" #include "shared-bindings/displayio/Bitmap.h" #include "shared-bindings/displayio/TileGrid.h" #include "shared-bindings/terminalio/Terminal.h" @@ -34,7 +35,9 @@ // These are autogenerated resources. // This is fixed so it doesn't need to be in RAM. -extern const displayio_bitmap_t supervisor_terminal_font; +extern const displayio_bitmap_t supervisor_terminal_font_bitmap; + +extern const displayio_builtinfont_t supervisor_terminal_font; // These will change so they must live in RAM. extern displayio_tilegrid_t supervisor_terminal_text_grid; diff --git a/tools/gen_display_resources.py b/tools/gen_display_resources.py index e0021650d2..22f19d84e5 100644 --- a/tools/gen_display_resources.py +++ b/tools/gen_display_resources.py @@ -118,7 +118,7 @@ displayio_palette_t supervisor_terminal_color = { c_file.write("""\ displayio_tilegrid_t supervisor_terminal_text_grid = {{ .base = {{ .type = &displayio_tilegrid_type }}, - .bitmap = (displayio_bitmap_t*) &supervisor_terminal_font, + .bitmap = (displayio_bitmap_t*) &supervisor_terminal_font_bitmap, .pixel_shader = &supervisor_terminal_color, .x = 16, .y = 0, @@ -149,7 +149,7 @@ c_file.write("""\ """) c_file.write("""\ -const displayio_bitmap_t supervisor_terminal_font = {{ +const displayio_bitmap_t supervisor_terminal_font_bitmap = {{ .base = {{.type = &displayio_bitmap_type }}, .width = {}, .height = {}, @@ -158,17 +158,29 @@ const displayio_bitmap_t supervisor_terminal_font = {{ .bits_per_value = 1, .x_shift = 5, .x_mask = 0x1f, - .bitmask = 0x1 + .bitmask = 0x1, + .read_only = true }}; """.format(len(all_characters) * tile_x, tile_y, bytes_per_row / 4)) + c_file.write("""\ -terminalio_terminal_obj_t supervisor_terminal = {{ - .base = {{.type = &terminalio_terminal_type }}, - .cursor_x = 0, - .cursor_y = 0, - .tilegrid = &supervisor_terminal_text_grid, +const displayio_builtinfont_t supervisor_terminal_font = {{ + .base = {{.type = &displayio_builtinfont_type }}, + .bitmap = &supervisor_terminal_font_bitmap, + .width = {}, + .height = {}, .unicode_characters = (const uint8_t*) "{}", .unicode_characters_len = {} }}; -""".format(extra_characters, len(extra_characters.encode("utf-8")))) +""".format(tile_x, tile_y, extra_characters, len(extra_characters.encode("utf-8")))) + +c_file.write("""\ +terminalio_terminal_obj_t supervisor_terminal = { + .base = { .type = &terminalio_terminal_type }, + .font = &supervisor_terminal_font, + .cursor_x = 0, + .cursor_y = 0, + .tilegrid = &supervisor_terminal_text_grid +}; +""")