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)
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...
