]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/screenshotimage.c
1a5561d4cd5102263c4211621bb9fb75bae7fcc3
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / screenshotimage.c
1 #ifdef INTERFACE
2 CLASS(XonoticScreenshotImage) EXTENDS(Image)
3         METHOD(XonoticScreenshotImage, configureXonoticScreenshotImage, void(entity, string))
4         METHOD(XonoticScreenshotImage, draw, void(entity))
5         ATTRIB(XonoticScreenshotImage, focusable, float, 1) // mousePress and mouseDrag work only if focusable is set
6         METHOD(XonoticScreenshotImage, mousePress, float(entity, vector))
7         METHOD(XonoticScreenshotImage, mouseDrag, float(entity, vector))
8         METHOD(XonoticScreenshotImage, mouseMove, float(entity, vector))
9         METHOD(XonoticScreenshotImage, resizeNotify, void(entity, vector, vector, vector, vector))
10         ATTRIB(XonoticScreenshotImage, realFontSize, vector, '0 0 0')
11         ATTRIB(XonoticScreenshotImage, fontSize, float, SKINFONTSIZE_NORMAL)
12         ATTRIB(XonoticScreenshotImage, showTitle, float, 1)
13         ATTRIB(XonoticScreenshotImage, screenshotTime, float, 0)
14         ATTRIB(XonoticScreenshotImage, screenshotTitle, string, string_null)
15 ENDCLASS(XonoticScreenshotImage)
16 entity makeXonoticScreenshotImage();
17 #endif
18
19 #ifdef IMPLEMENTATION
20 entity makeXonoticScreenshotImage()
21 {
22         entity me;
23         me = spawnXonoticScreenshotImage();
24         me.configureXonoticScreenshotImage(me, string_null);
25         return me;
26 }
27
28 void XonoticScreenshotImage_configureXonoticScreenshotImage(entity me, string theImage)
29 {
30         me.configureImage(me, theImage);
31         me.forcedAspect = -2;
32         me.screenshotTime = time;
33         me.updateAspect(me);
34         if (me.screenshotTitle)
35                 strunzone(me.screenshotTitle);
36         me.screenshotTitle = strzone(substring(me.src, 13, strlen(theImage) - 13)); //strip "/screenshots/"
37 }
38
39 float XonoticScreenshotImage_mousePress(entity me, vector coords)
40 {
41         return me.drag_setStartPos(me, coords);
42 }
43
44 float XonoticScreenshotImage_mouseDrag(entity me, vector coords)
45 {
46         return me.drag(me, coords);
47 }
48
49 float XonoticScreenshotImage_mouseMove(entity me, vector coords)
50 {
51         return me.drag_setStartPos(me, coords);
52 }
53
54 void XonoticScreenshotImage_draw(entity me)
55 {
56         if (me.src != "")
57         {
58                 float theAlpha;
59                 SUPER(XonoticScreenshotImage).draw(me);
60                 if (me.showTitle && time < me.screenshotTime + 4) // 3 seconds at full alpha, 1 second fading out
61                 {
62                         theAlpha = (4 - (time - me.screenshotTime));
63                         draw_CenterText('0.5 0 0', me.screenshotTitle, me.realFontSize, '1 1 1', theAlpha, FALSE);
64                 }
65                 if (time < me.zoomTime + 2) // 1 seconds at full alpha, 1 second fading out
66                 {
67                         string zoomString;
68                         float z;
69                         z = me.zoomFactor * 100;
70                         if (z - floor(z) == 0)
71                                 zoomString = sprintf("%d%%", z);
72                         else
73                                 zoomString = sprintf("%.2f%%", z);
74                         theAlpha = (2 - (time - me.zoomTime));
75                         draw_Text('0.05 0.95 0', zoomString, me.realFontSize, '1 1 1', theAlpha, FALSE);
76                 }
77         }
78 }
79
80 void XonoticScreenshotImage_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
81 {
82         SUPER(XonoticScreenshotImage).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
83         me.realFontSize_y = me.fontSize / absSize_y;
84         me.realFontSize_x = me.fontSize / absSize_x;
85 }
86 #endif