From 87eb79941248a1ffe12a2a7d18b308be66c0fed4 Mon Sep 17 00:00:00 2001 From: Sylvain PILLOT Date: Thu, 21 Mar 2024 21:19:18 +0100 Subject: [PATCH] Added french documentation for Upsilon extension of numworks module --- docs/sh/NWcompat_modules_fr.md | 183 +++++++++++++++++++++++---------- ports/sh/numworks/modion.c | 6 -- 2 files changed, 130 insertions(+), 59 deletions(-) diff --git a/docs/sh/NWcompat_modules_fr.md b/docs/sh/NWcompat_modules_fr.md index 6f2a70170..42e0142d4 100644 --- a/docs/sh/NWcompat_modules_fr.md +++ b/docs/sh/NWcompat_modules_fr.md @@ -4,11 +4,13 @@ PythonExtra offre la possibilité d'utiliser certains modules de la Numworks afi Il s'agit d'un Work in Progress (WIP) et le support est sujet à tests approfondis à ce stade. Le port concerne les modules `kandinsky`, `ion` et `time` de la Numworks qui sont spécifiques à la machine et sont désormais supportés via cette implémentation. Les modules `math`, `cmath`, `random` étant identiques entre la version `Numworks` et les modules `builtins` de MicroPython, ils ne font donc pas partie de cette implémentation mais sont parfaitement utilisables sans modification dans les scripts. -Note : les modules `turtle` et `matplotlib.pyplot` ne sont pas repris dans cette implémentation. Il est possible d'utiliser les modules `turtle`, `matplotlib` et `casioplot` de Casio Education qui sont parfaitement fonctionnels et fournis en example dans `ports/sh/examples`. +Note : les modules `turtle` et `matplotlib.pyplot` ne sont pas repris dans cette implémentation. Il est possible d'utiliser les modules `turtle`, `matplotlib` et `casioplot` de Casio Education qui sont parfaitement fonctionnels et fournis en exemple dans `ports/sh/examples`. ## `kandinsky` +### Version de base `kandinsky` Epsilon : + Le module `kandinsky` offre le support des primitives graphiques via les routines hautes performance de `gint`. Toutes les fonctions de ce module sont disponibles : - `color(r,g,b)` : Génère la valeur de la couleur r,g,b. Vous pouvez aussi simplement utiliser un tuple pour définir une couleur : (r,g,b). @@ -36,6 +38,59 @@ Le module offre de plus un certain nombre de couleurs explicitement nommées et - "cyan" - "brown" +### Version étendue `kandinsky` Upsilon : + +Le fork `Upsilon` de l'OS Numwork offre diverses méthodes additionnelles permettant d'étendre les capacités du module `kandinsky`. + +- `draw_line(x1,y1,x2,y2,color)` : Dessine une ligne entre les points (x1,y1) et (x2,y2). + +- `draw_circle(xc,yc,rc,color)` : Dessine un cercle de centre (xc,yc) et de rayon rc. + +- `fill_circle(xc,yc,rc,color)` : Dessine un disque de centre (xc,yc) et de rayon rc. + +- `fill_polygon(p,color)` : trace un polygone plein reliant tous les points founis dans le tableau p. + +``` +from math import ceil +from kandinsky import * + +SCREEN_W, SCREEN_H = 320, 222 + +def mod(l): + x_min, y_min = l[0] + x_max, y_max = 0, 0 + for k in range(len(l)): + x_min = min(x_min, l[k][0]) + y_min = min(y_min, l[k][1]) + x_max = max(x_max, l[k][0]) + y_max = max(y_max, l[k][1]) + fx = max(1, (x_max-x_min)/SCREEN_W) + fy = max(1, (y_max-y_min)/SCREEN_H) + for k in range(len(l)): + l[k][0] = ceil((l[k][0]-x_min)/fx) + l[k][1] = ceil((l[k][1]-y_min)/fy) + +l = [ + [0,200], + [400,200], + [400,250], + [450,150], + [0,200], + [2,62], + [223,236], + [253,222], + [274,236], + [350,184], + [121,2], + [2,62] +] + +mod(l) +fill_polygon( l, (255, 0, 0) ) +``` + +### Version étendue `kandinsky` pour fx-CG50 / Graph 90+E : + Les fonctions suivantes sont des ajouts pour tirer partie de l'écran large de la fxCG et qui sont donc une extension du module `Kandinsky`. Elles ne sont donc par définition pas compatible avec le Python Numwork. Ces fonctions sont reconnaisables à leurs appellations qui commencent toutes par `CGEXT_` : - `CGEXT_Enable_Wide_Screen()` : Active l'écran étendu de la fxCG, aucun paramètre n'est nécessaire. Les coordonnées x de l'écran physique peuvent être négatives pour empiéter sur la bande blanche de gauche et supérieures à 319 pixels pour empièter sur la bande blanche de droite; @@ -53,62 +108,84 @@ Note 2 : En mode non étendu (par défaut à l'initialisation du module `Kandins ## `ion` +### Version de base `ion` Epsilon : + Le module `ion` donne accès à la fonction `keydown(k)` qui renvoie True si la touche k placée en argument est appuyée et False sinon. La "conversion" des touches entre la machine Numworks et Casio fxCG50 se fait selon le mapping suivant : -| Numworks | Casio fxCG50 | Numworks Key # | -|----------|--------------|---------------------| -| KEY_LEFT | KEY_LEFT | 0 | -| KEY_UP | KEY_UP | 1 | -| KEY_DOWN | KEY_DOWN | 2 | -| KEY_RIGHT | KEY_RIGHT | 2 | -| KEY_OK | KEY_F1 | 4 | -| KEY_BACK | KEY_EXIT | 5 | -| KEY_HOME | KEY_MENU | 6 | -| KEY_ONOFF | KEY_ACON | 7 | -| ... | ... | ... | -| KEY_SHIFT | KEY_SHIFT | 12 | -| KEY_ALPHA | KEY_ALPHA | 13 | -| KEY_XNT | KEY_XOT | 14 | -| KEY_VAR | KEY_VARS | 15 | -| KEY_TOOLBOX | KEY_OPTN | 16 | -| KEY_BACKSPACE | KEY_DEL | 17 | -| KEY_EXP | KEY_EXP | 17 | -| KEY_LN | KEY_LN | 19 | -| KEY_LOG | KEY_LOG | 20 | -| KEY_IMAGINARY | KEY_F2 | 21 | -| KEY_COMMA | KEY_COMMA | 22 | -| KEY_POWER | KEY_POWER | 23 | -| KEY_SINE | KEY_SIN | 24 | -| KEY_COSINE | KEY_COS | 25 | -| KEY_TANGENT | KEY_TAN | 26 | -| KEY_PI | KEY_F3 | 27 | -| KEY_SQRT | KEY_F4 | 28 | -| KEY_SQUARE | KEY_SQUARE | 29 | -| KEY_SEVEN | KEY_7 | 30 | -| KEY_EIGHT | KEY_8 | 31 | -| KEY_NINE | KEY_9 | 32 | -| KEY_LEFTPARENTHESIS | KEY_LEFTP | 33 | -| KEY_RIGHTPARENTHESIS | KEY_RIGHTP | 34 | -| ... | ... | ... | -| KEY_FOUR | KEY_4 | 36 | -| KEY_FIVE | KEY_5 | 37 | -| KEY_SIX | KEY_6 | 38 | -| KEY_MULTIPLICATION | KEY_MUL | 39 | -| KEY_DIVISION | KEY_DIV | 40 | -| ... | ... | ... | -| KEY_ONE | KEY_1 | 42 | -| KEY_TWO | KEY_2 | 43 | -| KEY_THREE | KEY_3 | 44 | -| KEY_PLUS | KEY_ADD | 45 | -| KEY_MINUS | KEY_SUB | 46 | -| ... | ... | ... | -| KEY_ZERO | KEY_0 | 48 | -| KEY_DOT | KEY_DOT | 49 | -| KEY_EE | KEY_F5 | 50 | -| KEY_ANS | KEY_NEG | 51 | -| KEY_EXE | KEY_EXE | 52 | +| Numworks | Casio fxCG50 | Numworks Key # | Upsilon Key Name | +|----------|--------------|---------------------|---------------------| +| KEY_LEFT | KEY_LEFT | 0 | 'left' | +| KEY_UP | KEY_UP | 1 | 'up' | +| KEY_DOWN | KEY_DOWN | 2 | 'down' | +| KEY_RIGHT | KEY_RIGHT | 2 | 'right' | +| KEY_OK | KEY_F1 | 4 | 'OK' | +| KEY_BACK | KEY_EXIT | 5 | 'back' | +| KEY_HOME | KEY_MENU | 6 | 'home' | +| KEY_ONOFF | KEY_ACON | 7 | 'onOff' | +| ... | ... | ... | ... | +| KEY_SHIFT | KEY_SHIFT | 12 | 'shift' | +| KEY_ALPHA | KEY_ALPHA | 13 | 'alpha' | +| KEY_XNT | KEY_XOT | 14 | 'xnt' | +| KEY_VAR | KEY_VARS | 15 | 'var' | +| KEY_TOOLBOX | KEY_OPTN | 16 | 'toolbox' | +| KEY_BACKSPACE | KEY_DEL | 17 | 'backspace' | +| KEY_EXP | KEY_EXP | 17 | 'exp' | +| KEY_LN | KEY_LN | 19 | 'ln' | +| KEY_LOG | KEY_LOG | 20 | 'log' | +| KEY_IMAGINARY | KEY_F2 | 21 | 'imaginary' | +| KEY_COMMA | KEY_COMMA | 22 | 'comma' | +| KEY_POWER | KEY_POWER | 23 | 'power' | +| KEY_SINE | KEY_SIN | 24 | 'sin' | +| KEY_COSINE | KEY_COS | 25 | 'cos' | +| KEY_TANGENT | KEY_TAN | 26 | 'tan' | +| KEY_PI | KEY_F3 | 27 | 'pi' | +| KEY_SQRT | KEY_F4 | 28 | 'sqrt' | +| KEY_SQUARE | KEY_SQUARE | 29 | 'square' | +| KEY_SEVEN | KEY_7 | 30 | '7' | +| KEY_EIGHT | KEY_8 | 31 | '8' | +| KEY_NINE | KEY_9 | 32 | '9' | +| KEY_LEFTPARENTHESIS | KEY_LEFTP | 33 | '_paren_open_' | +| KEY_RIGHTPARENTHESIS | KEY_RIGHTP | 34 | '_paren_clos_' | +| ... | ... | ... | ... | +| KEY_FOUR | KEY_4 | 36 | '4' | +| KEY_FIVE | KEY_5 | 37 | '5' | +| KEY_SIX | KEY_6 | 38 | '6' | +| KEY_MULTIPLICATION | KEY_MUL | 39 | '_star_' | +| KEY_DIVISION | KEY_DIV | 40 | '_slash_' | +| ... | ... | ... | ... | +| KEY_ONE | KEY_1 | 42 | '1' | +| KEY_TWO | KEY_2 | 43 | '2' | +| KEY_THREE | KEY_3 | 44 | '3' | +| KEY_PLUS | KEY_ADD | 45 | '_plus_' | +| KEY_MINUS | KEY_SUB | 46 | '_hyphen_' | +| ... | ... | ... | ... | +| KEY_ZERO | KEY_0 | 48 | '0' | +| KEY_DOT | KEY_DOT | 49 | '_dot_' | +| KEY_EE | KEY_F5 | 50 | 'EE' | +| KEY_ANS | KEY_NEG | 51 | 'Ans' | +| KEY_EXE | KEY_EXE | 52 | 'EXE' | + + +### Version de base `ion` Upsilon : + +Upsilon étend les méthodes du module `ion` en ajoutant les fonctions suivantes : + +- `get_keys()` : renvoi la liste des touches pressées (au format texte) selon les codes définis dans le tableau ci-dessus. + +- `set_brightness( level )` : change la luminosité de l'écran (level prenant une valeur comprise entre 0 et 240 comprises). + +- `get_brightness( )` : retourne la luminosité courante de l'écran (renvoie une valeur comprise entre 0 et 240 comprises). + +- `keyboard_keydown( k )` : similaire à keydown( k ) de base dans Epsilon, pour des raisons de compatibilité ascendante. + +- `battery( )` : retourne le voltage courant de la batterie (des piles sur Casio-fxCG). + +- `battery_level( )` : retourne le l'état de charge de la batterie (des piles) sous forme d'un entier compris en 0 (déchargée(s)) et 4 (complètement chargée(s)). + +- `battery_ischarging( )` : renvoie `True` si batterie en charge et `False` sinon (rencoie toujours `False`sur Casio fx-CG car piles sans fonction de recharge). + ## `time` diff --git a/ports/sh/numworks/modion.c b/ports/sh/numworks/modion.c index b42855df7..1a21cd5e4 100644 --- a/ports/sh/numworks/modion.c +++ b/ports/sh/numworks/modion.c @@ -167,10 +167,6 @@ STATIC mp_obj_t ion_keydown(mp_obj_t arg1) { /* The following function are coming from the Upsilon extension of NW Ion methods */ -STATIC mp_obj_t ion_keyboard_keydown(mp_obj_t arg1) { - return ion_keydown( arg1 ); -} - STATIC mp_obj_t ion_battery( void ) { int voltage = (int) gint_world_switch( GINT_CALL( GetMainBatteryVoltage, 1) ); float value = ((float) voltage) / 100.0f; @@ -221,7 +217,6 @@ STATIC mp_obj_t ion_get_brightness( void ) { MP_DEFINE_CONST_FUN_OBJ_1(ion_keydown_obj, ion_keydown); -MP_DEFINE_CONST_FUN_OBJ_1(ion_keyboard_keydown_obj, ion_keyboard_keydown); MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_obj, ion_battery); MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_level_obj, ion_battery_level); MP_DEFINE_CONST_FUN_OBJ_0(ion_battery_charging_obj, ion_battery_charging); @@ -295,7 +290,6 @@ STATIC const mp_rom_map_elem_t ion_module_globals_table[] = { { MP_ROM_QSTR(MP_QSTR_keydown), MP_ROM_PTR(&ion_keydown_obj) }, /* Upsilon only objects */ - { MP_ROM_QSTR(MP_QSTR_keyboard_keydown), MP_ROM_PTR(&ion_keyboard_keydown_obj) }, { MP_ROM_QSTR(MP_QSTR_battery), MP_ROM_PTR(&ion_battery_obj) }, { MP_ROM_QSTR(MP_QSTR_battery_level), MP_ROM_PTR(&ion_battery_level_obj) }, { MP_ROM_QSTR(MP_QSTR_battery_charging), MP_ROM_PTR(&ion_battery_charging_obj) },