1/////////////////////////////////////////////////////////////////////////////
2// Name:        press.pov
3// Purpose:     POV-Ray scene used to generate clip for splash
4// Author:      Wlodzimierz ABX Skiba
5// Modified by:
6// Created:     24/11/2004
7// Copyright:   (c) Wlodzimierz Skiba
8// Licence:     wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#version 3.6;
12
13// Rendering options : +FT +W80 +H60 +AM1 +A0.05 +R5 +J0 +KFF500
14// Produced TGA images converted to MPG with good old (1993) CMPEG tool
15// Conversion : cmpeg.exe -v1 ipb.ctl frames.lst press.mpg
16
17#include "colors.inc"
18#include "rad_def.inc"
19
20global_settings {
21    assumed_gamma 1.0
22    max_trace_level 100
23}
24
25background { colour White }
26
27#declare Texts = array[ 3 ];
28
29#declare Texts[0] = "PRESS";
30#declare Texts[1] = "ANY";
31#declare Texts[2] = "KEY";
32
33camera{ orthographic look_at .5 location .5-z right 1.05*x up 1.05*y }
34
35#declare Items = dimension_size( Texts , 1 );
36
37#declare Objects = array[ Items + 1 ];
38
39#declare f_line = function(x,xa,ya,xb,yb){((yb-ya)/(xb-xa))*(x-xa)+ya};
40
41#declare Counter = 0;
42#while ( Counter <= Items )
43    #if ( Counter < Items )
44        #declare Object = text{ ttf "crystal.ttf" Texts[ Counter ] 1 0 };
45    #else
46        #declare Object = Objects[ Items ];
47    #end
48
49    #declare M = max_extent( Object );
50    #declare m = min_extent( Object );
51    #declare S = M - m;
52    #declare Objects[ Counter ] = object{ Object translate -m + z*Counter scale <1/S.x,1/S.y,1> };
53    #declare Objects[ Items ] =
54        #if ( Counter = 0 | Counter = Items )
55            object{
56        #else
57            union{
58                object{ Objects[ Items ] translate y*1.1 }
59        #end
60                object{ Objects[ Counter ] }
61            };
62
63    #declare Pause=0.1;
64    #declare X0=(Counter+Pause)/(Items+2);
65    #declare Y0=0;
66    #declare X1=(Counter+1)/(Items+2);
67    #declare Y1=1;
68    #declare X2=(Counter+2-Pause)/(Items+2);
69    #declare Y2=0;
70
71    #declare C1=f_line(clock,0,0,3/4,1);
72    #declare C2=(Items+1)/(Items+2);
73    #declare C3=f_line(clock,1/4,0,1,1);
74    #declare C=max(min(C1,C2),C3);
75
76    #declare increase=f_line(C,X0,Y0,X1,Y1);
77    #declare decrease=f_line(C,X1,Y1,X2,Y2);
78    #declare change=min(increase,decrease);
79    #declare level=min(max(change,0),1);
80
81    object{
82        Objects[ Counter ]
83        pigment{ rgb level transmit 1-level }
84    }
85    #declare Counter = Counter + 1;
86#end
87
88