var zoom:integer;
icon,filename,bmp,Mask,FileNameZoom,css,cssLegende,float,Group,Topic: string;
Legende:string;
BmpSource,BmpZoom,BmpIcon:TBitmap;
index_z:string;
i,L,H,IconX,iconY,r,g,b,LZoom:integer;
js:TstringList;
WINDOW_OPEN_JS,PathFile,s:string;
color,scr,popup:string;
begin


float := GetParam('Float','none');
Group := GetParam('Group','');
// icon image ê incruster
icon := GetParam('Icon','');
iconX := strToInt(GetParam('IconX','0'));
iconY := strToInt(GetParam('IconY','0'));
// on peut raliser une miniature soit d'une image
bmp := GetParam('img','');
// soit directement d'une rubrique
topic := GetParam('Topic','');
// mais l'image a la priorit
if bmp<>'' then Topic := '';
// lgende
Legende := GetParam('Legende','');
// css
css := GetParam('CssConteneur','');
CssLegende := GetParam('CssLegende','');

// zoom
Zoom := strtoint(GetParam('Zoom','100'));

BmpSource := TBitmap.create;
if topic<>'' then
begin
BmpSource.LoadFromString(GetTextOf(GetProjet,Topic));
bmp := topic;
end else BmpSource.LoadFromFile(bmp);
L := BmpSource.Width;
H := BmpSource.Height;
BmpZoom := TBitmap.create;
// on ne peut sauver que des bitmaps alors il faut fixer la bonne extension
// help&web se chargera par la suite de convertir
FileNameZoom := changefileExt(GetParam('FilenameZoom','zoom'+bmp),'.bmp');
BmpZoom.width := L*Zoom div 100;
BmpZoom.height := H*Zoom div 100;
LZoom := BmpZoom.width;

if Condition('_HTML_') then
begin
if float='none' then
float:='width:'+inttostr(BmpZoom.width)+ 'px' else float:='float:'+float;
write('<<WEB(<div class="')>>+css+<<FNT(STRING.-,-,-,-:'" style="text-align: center;')>>+float+<<FNT(STRING.-,-,-,-:';">)>>');
end;



// on va copier le bmp source dans le bmp zoom, en respectant sa taille
BmpSource.Stretch(BmpZoom);

if Icon<>'' then
begin
BmpIcon := TBitmap.create;
BmpIcon.LoadFromfile(icon);
BmpIcon.Transparent := true;
Bmpzoom.canvas.Draw(Iconx,IconY,BmpIcon);
end;


BmpZoom.SAveToFile(FilenameZoom);
BmpZoom.free;
BmpSource.free;


// on rcup¾re le bon numro d'ordre uniquement si l'on est en phase de compilation
if isCompilation then
begin
i := getVarInt('idxZoom',0);
i := i + 1;
setVarInt('idxZoom',i);
index_z:=intToStr(i);
end else index_z:='?'; // autrement on affiche un ?

// on dfini les variables globales qui seront utilis par HtmlThumbnail.spr
// pour construire la table des illustrations
if topic<>'' then
setVarString('ZOOM_'+index_z+'_TPC',Topic) else
setVarString('ZOOM_'+index_z+'_IMG',bmp); // image originale
setVarString('ZOOM_'+index_z+'_Link',GetNomof(getnum)); // un lien sur la page
setVarString('ZOOM_'+index_z+'_LEG',Legende); // la lgende
if Group<>'' then setVarString('ZOOM_'+index_z+'_GRP',Group); // le groupe

// on place un signet sur l'image pour pouvoir y accder directement
write('<<ICB(ZOOM_')>>+index_z+<<FNT(STRING.-,-,-,-:')>>');
// on va placer un lien sur l'image pour ouvrir celle-ci en taille relle




if Condition('_HTML_') then
begin
write('<<WEB(<a href="')>>+bmp+<<FNT(STRING.-,-,-,-:'" onclick="WindowOpen(this.href,')>>+inttostr(L+<<FNT(NUMBER.-,-,-,-:20)>>)+<<FNT(STRING.-,-,-,-:',')>>+IntToStr(H+<<FNT(NUMBER.-,-,-,-:20)>>)+<<FNT(STRING.-,-,-,-:'); return false;">)>>');
// on y accole notre image
writeln('<<BMP(C,')>>+FilenameZoom+<<FNT(STRING.-,-,-,-:',,')>>+Legende+<<FNT(STRING.-,-,-,-:',,1,1)>>');
// on ferme le lien et on passe ê la ligne
writeln('<<WEB(</a>)>>');
// affichage de la lgende
write('<<FNT(')>>+CssLegende+<<FNT(STRING.-,-,-,-:'.Arial,9,$000000,G:')>>+Legende+<<FNT(STRING.-,-,-,-:')>>');
// on ferme le conteneur
write('<<WEB(</div>)>>');
end else if Condition('_HLP_') then
begin
// popup est le nom de notre rubrique dynamique contenant l'image taille relle
popup := replace(bmp,'.','')+'_thumbnail';

writeln('<<MCR(PI(qchPath,`')>>+popup+<<FNT(NUMBER.-,-,-,-:#39)>>+<<FNT(STRING.-,-,-,-:'):')>>+<<FNT(STRING.-,-,-,-:'<<BMP(C,')>>+FilenameZoom+<<FNT(STRING.-,-,-,-:',,')>>+Legende+<<FNT(STRING.-,-,-,-:',,1,1)>>')>>+<<FNT(STRING.-,-,-,-:')>>');
// on veut centrer la lgende par rapport ê la vignette
// on va donc utiliser l'objet texte spcial en lui assignat la m©me largeur que la vignette
// on va aussi reprendre la couleur de fond pour cela il faut dterminer dans quelle zone on se trouve
// la zone fixe ou la zone droulante
if IsScroll then color := GetElement(eScrollColor) else color := GetElement(eFixeColor);
scr := '<<SCR(')>>+inttostr(LZoom)+<<FNT(STRING.-,-,-,-:',')>>+Legende+<<FNT(STRING.-,-,-,-:',')>>+CssLegende+<<FNT(STRING.-,-,-,-:'.Arial,12,256,0,2,')>>;
<<FNT(COMMENT.--,-,-,-:// on extrait les valeurs rouge, verte (green) et bleu de la couler de fond)>>
<<FNT(COMMENT.--,-,-,-:// car l'objet texte spcial en a besoin)>>
GetRgb(StringToColor(color),r,g,b);
scr := scr+intTostr(r)+<<FNT(STRING.-,-,-,-:',')>>+inttostr(g)+<<FNT(STRING.-,-,-,-:',')>>+inttostr(b)+<<FNT(STRING.-,-,-,-:',0,16,08,')>>;
<<FNT(COMMENT.--,-,-,-:// on va rentre aussi cliquable la lgende )>>
scr := scr+<<FNT(STRING.-,-,-,-:'PI(qchPath,`')>>+popup+<<FNT(NUMBER.-,-,-,-:#39)>>+<<FNT(STRING.-,-,-,-:'))>>'
;
// pour finir on affiche notre objet qui contiendra la lgende centre
writeln(scr);
// cration d'une rubrique dynamique qui contiendra l'image en taille relle
SetDynaTopic(popup,'<<BMP(C,')>>+bmp+<<FNT(STRING.-,-,-,-:',,')>>+Legende+<<FNT(STRING.-,-,-,-:',,1,1)>>');
end;






if Condition('_HTML_') then
begin


// on va maintenant crer le fichier js externe dfinissant notre fonction WindowOpen
WINDOW_OPEN_JS := 'windowopen.js';

// mais on va d'abord tester si on ne l'a pas djê fait ;)
if GetVarInt(WINDOW_OPEN_JS,0)=0 then
begin
SetVarInt(WINDOW_OPEN_JS,1); // pour ne pas le recrer la prochaine fois
JS := TStringList.create;
js.add('function WindowOpen(url,w1,h1){');
js.add('var w = screen.availWidth;');
js.add('var h = screen.availHeight;');
js.add('var leftPos = (w-w1)/2;');
js.add('var topPos = (h-h1)/2;');
s := 'window.open(url,'+#39+'zoom'+#39+','+#39+'width='+#39+' + w1 +'+#39;
s := s+ ',height='+#39+'+h1+'+#39+',top='+#39+'+topPos+'+#39+',left='+#39;
s := s+ '+leftPos+'+#39+ ',toolbar=no'+#39+', '+#39+'menubar=yes'+#39+', '+#39;
s := s+ 'location=no'+#39+', '+#39+'resizable=yes'+#39+', '+#39+'scrollbar=no'+#39;
s := s+ ', '+#39+'status=no'+#39+');';
js.add(s);
js.add('}');
// on sauvegarde
PathFile := PathProjet ;
if Condition('_HTMLHELP_') then PathFile:=PAthFile+'htmlhelp\';
PathFile:=PathFile+'html\';
js.SaveToFile(PathFile+WINDOW_OPEN_JS);
JS.free;
end;



// si on ne l'a pas djê fait pour cette page on place un lien dans le head pour lier notre script
if GetVarInt(WINDOW_OPEN_JS+GetTitre,0)=0 then
begin
SetVarInt(WINDOW_OPEN_JS+GetTitre,1);
writeln('<<WEB(head:<script type="text/javascript" src="')>>+WINDOW_OPEN_JS+<<FNT(STRING.-,-,-,-:'"></script>)>>');
end;

end;
// on renseigne help&web sur les images utilises
AddBitmapFile(bmp);
AddBitmapFile(FilenameZoom);

end;


end.

Sommaire