1

J'ai hésité entre poster ça ici ou ds newbie... Disons que ça va là.

Comment s'y prendre pour faire un zoom d'une partie de l'écran ?
À partir de 4 coordonnées qui indiquent les 2 extremités d'un rectangle, comment zoomer dessus ?

En gros quelle est la méthode, et si possible un exemple de code roll

svp évitez l'asm... j'aimerais faire un truc en pur C.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

tu dervais poster ce topic dans algo & optimisation, comme ca meme les personnes qui prog pas en C pouront t'aider...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

3

TI-89:
unsigned char vscreen[2990];
unsigned char x,y;
for(x=0;x<160;x++)
for(y=0;y<100;y++)
{
if(EXT_GETPIX(0x4c00,x*(x1-x0)/159+x0,y*(y1-y0)/99+y0))
EXT_SETPIX(vscreen,x,y);
else
EXT_CLRPIX(vscreen,x,y);
}
memcpy(0x4c00,vscreen,2990);


TI-92+:
unsigned char vscreen[3840];
unsigned char x,y;
for(x=0;x<240;x++)
for(y=0;y<128;y++)
{
if(EXT_GETPIX(0x4c00,x*(x1-x0)/239+x0,y*(y1-y0)/127+y0))
EXT_SETPIX(vscreen,x,y);
else
EXT_CLRPIX(vscreen,x,y);
}
memcpy(0x4c00,vscreen,3840);


où (x0,y0) et (x1,y1) sont les extrémités du rectangle.
[edit]Edité par Kevin Kofler le 23-12-2001 à 18:42:37[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

Timad > merci pr le conseil. Au fait, j'adorrrreeee ton avatar wink
Kevin > merci je vais essayer. mais l'utilisation de for imbriqués ne ralenti pas tout affreusement ? (je n'y connait pas grand chose, moi c plutot basic, et ce genre de lignes sont à éviter roll)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

5

C'est très lent en effet. Mais ce n'est pas facile de faire mieux. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

je n'ai pas encore eu le temps d'essayer...
mais "très lent" c'est combien environ ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

7

j'ai fais un programme de zoom en C qui, a partir d'une image de type pic (50*50 max),
en fais un zoom x2 sur le coté et un zomm x1/2 en dessous et c'est quasi instantané.
Voila le code:

// C Source File
// Created 02/12/01; 15:57:33

#define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization

#define SAVE_SCREEN // Save/Restore LCD Contents

#include <tigcclib.h> // Include All Header Files

short _ti89; // Produce .89Z File
short _ti92plus; // Produce .9XZ File
short x;
short y;
short color;
short show_picvar(char *SymName, short x, short y, short Attr)
{
SYM_ENTRY *sym_entry = SymFindPtr(SymName, 0);
if (!sym_entry) return FALSE;
if (peek(HToESI (sym_entry->handle)) != PIC_TAG) return FALSE;
BitmapPut(x, y, HeapDeref (sym_entry->handle) + 2, ScrRect, Attr);
return TRUE;
}
void _main(void)
{
ESI argptr;
short argtype = 0;
argptr = top_estack;
argtype = GetArgType(argptr);
ClrScr();
if (argtype != STR_TAG)
{
DlgMessage("ERREUR!","Argument inexistant ou d'autre type que 'str'",BT_OK,BT_NONE);
goto fin2;
}
if(show_picvar(GetSymstrArg(argptr),0,0,A_NORMAL)==FALSE)
{
goto erreur;
}
goto fin;
erreur:
DlgMessage("ERREUR!","l'image n'existe pas",BT_OK,BT_NONE);
goto fin2;
fin:
for (x=0;x!=50;x++)
{
for (y=0;y!=50;y++)
{
if(GetPix(x,y)==1)
{
DrawPix(x*2+50,y*2,A_NORMAL);
DrawPix(x*2+51,y*2,A_NORMAL);
DrawPix(x*2+50,y*2+1,A_NORMAL);
DrawPix(x*2+51,y*2+1,A_NORMAL);
}

}
}
for (x=0;x!=50;x=x+2)
{
for (y=0;y!=50;y=y+2)
{
color=0;
if(GetPix(x,y)==1)
{
color=color+1;
}
if(GetPix(x,y+1)==1)
{
color=color+1;
}
if(GetPix(x+1,y)==1)
{
color=color+1;
}
if(GetPix(x+1,y+1)==1)
{
color=color+1;
}
if(color>0)
{
DrawPix(x/2,y/2+65,A_NORMAL);
}
}
}
ngetchx();
fin2:

}

En espèrant que ca puisse t'aidergrin

8

Ça a l'air pas mal ! Merci, ça me servira, mais pas cette fois-ci : il fallait que je fasse un zoom de l'écran entier
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

de toute facon la aussi il y a une double boucle for.
et je ne vois pas comment l'eviter...
Je commence a reussir a faire bouger un sprite. Ou bah je suis content !

10

bah moi non plus wink
je commence à peine en C alors même si il existe un moyen d'éviter ces boucles c pas moi qui vait le trouver roll
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

je cherche pour améliorer mon prog (cf + haut) comment faire pour faire des zooms de multiple différents de 2?
(ex un zoom de 1/3)

12

Le code de swal89 risque d'être encore plus lent que le mien parce qu'il utilise les ROM_CALLs GetPix et DrawPix plutôt que les macros équivalentes de ExtGraph.
[edit]Edité par Kevin Kofler le 24-12-2001 à 16:13:58[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

Vs me conseillez vraiment d'utiliser extgraph ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

extgraph rame pas mal pr certains trucsz...
mais, par rapport à des fonctions de TIGCC, c le rêves (sprites, par ex)
Mais ça peut être largemlent optiisé...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

15

Et ça augmente la taille du prog final sensiblement ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

16

Non!
La taille augmente seulement avec chaque fonction que tu utilises (comme pour TIGCCLIB d'ailleurs) - c'est un des avantages des librairies statiques. Si tu n'utilises que les macros, aucune fonction de ExtGraph ne se retrouvera dans le fichier résultant.
[edit]Edité par Kevin Kofler le 24-12-2001 à 19:17:33[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

17

Ouuuuuuh !!!
Kevin > Je viens d'essayer ton code, il m'a donné une adresse erreur (mais ça c'est surement une erreur de ma part). Mais en plus ça n'a pas marché, et ça met environ 6 secondes à faire le zoom sadsadsad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

18

Je vais voir d'où vient ton Address Error.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

19

Merci, mais ne te dérange pas pr ça, je débute en C et les erreurs j'y suis habitué roll
Mais par contre, 6 secondes c bcp, comment marchent les progs de zoom rapides qu'on voit (l'exemple de rvlib, ou le "demo5" de extgraph) ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

Dans ExtGraph, il y a des routines spéciales pour zoomer des sprites carrés <64*64. Pour rv_lib, il faut demander à HerveRV, mais je pense que ça doit y ressembler (sprite de taille fixe).
[edit]Edité par Kevin Kofler le 24-12-2001 à 20:55:23[/edit]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

21

dommage sad
y'a vraiment pas moyen de faire un zoom universel rapide ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

22

Double post...
[edit]Edité par Bob 64 le 24-12-2001 à 21:00:00[/edit]
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Il doit y avoir moyen de faire plus rapide que mes 2 petites routines.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

24

Et elles sont déjà pas mal ...
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

25

Bah oui mais la c pas de sa faute, c lent sad
Au pire faudrait que je comprenne l'algo pr redimentionner des sprites de tailles fixes
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

26

Je n'ai pas encore eu le temps de tester, mais j'ai peut-être une explication à ton Address Error. Certaines multiplications dépassent d'un unsigned char. Essaye de déclarer x et y en unsigned short.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

27

je me trompe, ou avec des macros, la taille du programme augmentera encore plus vite qu'avec des fonctions ?

Juste comme ça, qd on utilises des fonctions d'Extgraph au lieu de macros, on se rend parfois compte de la différence grin
(que ce soit en mémoire, mais aussi en vitesse...)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

28

Oui, la taille peut augmenter de beaucoup. Mais pour tester, allumer et éteindre un pixel, ce n'est pas énorme normalement.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

29

Oula... ça marche pas :

Zoom.gif
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

30

Oups... grin
Pourtant il me semblait que ma routine était correcte... sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité