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é

31

Elle est correcte ta routine, elle zoom sans défaut et rapidement
routine.gif
[edit]Edité par rdn_spe le 26-12-2001 à 17:03:27[/edit]

32

tu peux nous monter le source stp ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

33

Laquelle? Ce n'est certainement pas la mienne, qui remplit l'écran entier.
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é

34

j'ai copié exactement celles de Kevin

35

C'est qu'elles ne marchent pas alors... Ou alors que ce ne sont pas les miennes.
Tu n'es pas censé pouvoir avoir 3 niveaux de zoom différents en même temps sur le même écran avec mes routines. C'est fait pour prendre un rectangle de l'écran et l'agrandir de façon à l'avoir en plein écran.
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é

36

Compilé avec TIGCC 0.92
pardon mais en fait c t pa les sources de Kevin...
elles sont dans la première page

// C Source File
// Created 26/12/2001; 16:48:15

#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:

}
[edit]Edité par rdn_spe le 26-12-2001 à 17:32:45[/edit]

37

c pas du tout la fonction de kevin ça sad

celle la est très rapide, mais ne fait que redimentionner l'image au double ou à la moitié. On ne peut pas choisir d'autres niveaux de zoom
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

38

Je vais voir si je peux améliorer cette source, le zoom m'interresse assez car je suis en train de faire un prog de dessin on-calc.
Si des personnes sont tentées...

Je débute aussi en C mais ce type de prograame est pas mal pour commencer (manipulation des sprites, des fichiers, ...)

39

je viens de refaire l'algo de kevin, et j'ai tenté de le corriger, mais ça ne marche tjrs pas.
Pourtant j'ai l'impression qu'il ne manque pas grand-chose, j'ai presque réussi à avoir un résultat.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

40

Est-ce que tu peux m'envoyer ce que tu as fais pour le moment?

41

char virtuel[LCD_SIZE];
unsigned short x,y;
PortSet(virtuel,calc(159,239),calc(99,127));
for(x=0;x<=calc(159,239);x++)
for(y=0;y<=calc(99,127);y++)
{
if(GetPix(commandes[1]+x*(commandes[3]-commandes[1])/calc(160,240),commandes[2]+y*(commandes[4]-commandes[2])/calc(100,128))) DrawPix(x,y,A_NORMAL);
else DrawPix(x,y,A_REVERSE);
}
LCD_restore(virtuel);
PortRestore();

commandes est un tableau qui contient les 4 coordonées à zoomer : x1,y1,x2,y2
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

42

ah oui aussi : la macro 'calc' renvoie soit la 1ere valeur soit la 2eme suivant la calc utilisée
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

43

Il est déclaré comment, commandes? Parce que si c'est commandes[4], les indices vont de 0 à 3, pas de 1 à 4!!!
[edit]Edité par Kevin Kofler le 26-12-2001 à 22:39:50[/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é

44

commandes[5]

la valeur commandes[0] me sert à autre chose
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

45

Là-dedans:
if(GetPix(commandes[1]+x*(commandes[3]-commandes[1])/calc(160,240),commandes[2]+y*(commandes[4]-commandes[2])/calc(100,128))) DrawPix(x,y,A_NORMAL);
ça devrait être:
if(GetPix(commandes[1]+x*(commandes[3]-commandes[1])/calc(159,239),commandes[2]+y*(commandes[4]-commandes[2])/calc(99,127))) DrawPix(x,y,A_NORMAL);

Mais ce n'est pas ça qui fera la plus grande catastrophe.

La catastrophe, c'est que tu ne peux pas utiliser 2 écrans en même temps avec les fonctions d'AMS, alors que ma routine en a besoin (lis bien ma source)! Utilise les macros de ExtGraph bon sang!
[edit]Edité par Kevin Kofler le 26-12-2001 à 23:29:57[/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é

46

Heu... j'aimerais le faire sans extgraph pr l'instant... Si ça marche je le referait peut-être avec extgraph mais pour le début je voudrais réussir sans lib additionelle.

Mais dans le tuto de squale, il parle des ecrans virtuels. C'est ça que j'ai essayé de faire.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

47

Pas besoin d'utiliser la librairie pour utiliser ses macros. Tout ce qu'il faut, c'est #include "extgraph.h"!
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é

48

char virtuel[3840];
unsigned short x,y;
for(x=0;x<=calc(159,239);x++)
for(y=0;y<=calc(99,127);y++)
{
if(EXT_GETPIX(0x4c00,commandes[1]+x*(commandes[3]-commandes[1])/calc(159,239),commandes[2]+y*(commandes[4]-commandes[2])/calc(99,127))) EXT_SETPIX(virtuel,x,y);
else EXT_CLRPIX(virtuel,x,y);
}
memcpy(0x4c00,virtuel,3840);


Et ne change pas le code en gras!
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é

49

Bah oui, merci... Mais tu n'as pas lu ce que j'avais mit :
Est-il possible d'utiliser des écrans virtuels sans Extgraph ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

50

Le problème, c'est qu'avec ton PortSet, le GetPix était également à virtuel plutôt qu'à 0x4c00, et que donc ça ne pouvait pas marcher. Il te faudrait des PortSet et PortRestore de partout. Donc autant utiliser les macros de extgraph.h. Et je ne vois pas l'inconvénient à utiliser une librairie statique: ton utilisateur ne s'en rendrait même pas compte, même si tu utilisais des fonctions, ce qui n'est même pas le cas ici.
[edit]Edité par Kevin Kofler le 26-12-2001 à 23:38:55[/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é

51

ça veut dire qu'il faudrait restaurer le port à chaque getpxl ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

52

Oui. Et je te laisse imaginer la vitesse résultante. (LEEEEEEEEEENTE!) Maintenant je comprends pourquoi ma routine a pris une éternité chez toi, et ne marchait pas. Parce que tu avais changé ce qui faisait sa vitesse-même. rage Arrête de traffiquer mes routines si tu ne les comprends pas!
[edit]Edité par Kevin Kofler le 26-12-2001 à 23:40:40[/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é

53

Beuh... Je ne voulais pas (et je ne veux tjrs pas...) utiliser extgraph

dsl d'avoir modifié tes routines mais ct le seul moyen pr moi d'avancer (et d'apprendre)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

54

ah oui tu as écrit : char virtuel[3840];

Pkoi ? LCD_SIZE n'est pas bon ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

55

Je veux bien, mais il y a une raison (en fait deux) pourquoi j'ai utilisé les macros de ExtGraph. Et tu ne m'as toujours pas expliqué ce qu'elle t'a fait de mal, ExtGraph. D'autant plus que ces macros ne touchent même pas à extgraph.a, elles sont juste définies "par hasard" dans extgraph.h.
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é

56

Tu peux laisser LCD_SIZE. (J'ai vérifié et c'est bien toujours 3840. Je voulais juste être sûr que ce ne sera pas parfois 3000, voire 2000.)
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é

57

1) Je ne suis pas trop sur de mon coup roll Je n'ai jamais utilisé extgraph
2) J'aurais bien aimé réussir avec les fonctions de base de tigcc...

Mais enfin si tu me dis qu'il faut utiliser extgraph, il va bien falloir que j'essaie sad
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

58

C'est bon j'ai presque ce que tu veux:
j'ai réécrit quelques lignes à partir de la sources de la page un et maintenant on peut zoomer comme on veux (en longueur ou en hauteur)
zoom.gif

et voila la source:

// C Source File
// Created 26/12/2001; 23:58:15

#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 x1;
short y1;

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;
long longueur, hauteur;

argptr = top_estack;
argtype = GetArgType(argptr);
ClrScr();

//On récupère le premier argument (un string contenant le nom de répertoire et le nom de l'image)
if (argtype != STR_TAG) {
DlgMessage("ERREUR!","Argument inexistant ou d'autre type que 'str'",BT_OK,BT_NONE);
return;
}

//On vérifie la présence de l'image donnée en premier argument et on l'affiche
if(show_picvar(GetSymstrArg(argptr),0,0,A_NORMAL)==FALSE) {
DlgMessage("ERREUR!","l'image n'existe pas",BT_OK,BT_NONE);
return;
}

//On récupère la taille de zoom demandée en long
argtype = GetArgType(argptr);
if (argtype != POSINT_TAG){
DlgMessage("ERREUR!","Argument inexistant ou d'autre type que 'int'",BT_OK,BT_NONE);
return;
}
longueur = GetIntArg (argptr);

//On récupère la taille de zoom demandée en hauteur
argtype = GetArgType(argptr);
if (argtype != POSINT_TAG){
DlgMessage("ERREUR!","Argument inexistant ou d'autre type que 'int'",BT_OK,BT_NONE);
return;
}
hauteur = GetIntArg (argptr);

//On limite le zoom à 5x5
if (longueur>5) longueur=5;
if (hauteur>5) hauteur=5;

//Partie où on agrandi l'image
//On scanne l'image sur 50 de long et 50 de haut
for (x=0;x!=50;x++) {
for (y=0;y!=50;y++) {
//Si le pixel est allumé
if(GetPix(x,y)==1) {
//On l'affiche autant de fois en hauteur et longueur
for (x1=0;x1!=longueur;x1++) {
for (y1=0;y1!=hauteur;y1++) {
DrawPix(x*longueur+50+x1,y*hauteur+y1,A_NORMAL);
}
}
}
}
}

ngetchx();
}

Je n'ai pas mis le rétrécissement car je n'est pas trop compris encore comment il fonctionne...sad

59

Oui, mais avec ça, si tu gardes tes ROM_CALLs, tu ne pourras pas avoir une zone de l'original et une zone résultante qui se recoupent. Il faut en même temps lire sur un écran (réel ou virtuel) et dessiner sur un autre écran (réel ou virtuel).

Et puis, tu pars de l'original pour calculer les coordonnées dans l'image zoomée. Ça ne va pas du tout (as-tu regardé ce que ça donne si on agrandit une image avec ça? Ça sera bourré de trous). Il faut partir de la destination et calculer les coordonnées dans la source (comme dans ma routine).
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é

60

Oui mais son effet est très rapide. C'est dommage que ça ne soit pas tt à fait ce qu'il me faut.

Il va donc falloir que j'utilise extgraph et un écran virtuel... Je ferais ça à mon retour de vacances zzz
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)