Overview

Request 2255 (accepted)

No description set
Submit package home:awissu:branches:Multimedia / sview to package Multimedia / sview

sview.changes Changed
x
 
1
@@ -1,4 +1,17 @@
2
 -------------------------------------------------------------------
3
+Sun Nov 29 12:31:27 UTC 2015 - avvissu@yandex.ru
4
+
5
+- Update to 15.11:
6
+  * introduces extended remote control from command line
7
+  * adds support of sTER chunk in PNG files identifying 
8
+    side-by-side format
9
+  * adds support of list of files within Drag & Drop. Two files are 
10
+    handled as stereo pair
11
+  * updates experimental DXVA2 decoder - more codecs are now 
12
+    supported
13
+  * fixes cursor hiding within NVIDIA 3D Vision output (Direct3D)
14
+
15
+-------------------------------------------------------------------
16
 Wed Oct 21 17:46:52 UTC 2015 - avvissu@yandex.ru
17
 
18
 - Update to 15.10:
19
sview.spec Changed
23
 
1
@@ -16,10 +16,10 @@
2
 #
3
 
4
 
5
-%define src_ver 15_10
6
+%define src_ver 15_11
7
 %define src_name sView
8
 Name:           sview
9
-Version:        15.10
10
+Version:        15.11
11
 Release:        0
12
 Summary:        Stereoscopic media player
13
 License:        GPL-3.0+ and LGPL-3.0+
14
@@ -92,7 +92,7 @@
15
 
16
 %files
17
 %defattr(-,root,root)
18
-%doc LICENSE license-gpl* license-lgpl*
19
+%doc LICENSE*
20
 %{_bindir}/%{src_name}
21
 %{_libdir}/%{src_name}/
22
 %{_datadir}/applications/%{src_name}IV.desktop
23
sview-15_10.tar.gz/3rdparty/FFmpeg/patches/patch_dxva.patch Deleted
1745
 
1
@@ -1,1743 +0,0 @@
2
-From dad9d95e75f601c9b8864724bf68cf4a7f63ccaa Mon Sep 17 00:00:00 2001
3
-From: Kirill Gavrilov <kirill@sview.ru>
4
-Date: Wed, 7 Jan 2015 11:33:03 +0400
5
-Subject: [PATCH] lavc/dxva2: add ffmpeg calling dxva2 APIs
6
-
7
-Signed-off-by: weixuan wang <batmanwwx@gmail.com>
8
----
9
- configure                  |   4 +
10
- libavcodec/Makefile        |   4 +
11
- libavcodec/allcodecs.c     |   4 +
12
- libavcodec/dxva2_dec.c     | 356 +++++++++++++++++++++
13
- libavcodec/dxva2_wrapper.c | 777 +++++++++++++++++++++++++++++++++++++++++++++
14
- libavcodec/dxva2_wrapper.h | 389 +++++++++++++++++++++++
15
- libavcodec/mpeg12.h        |  23 ++
16
- libavcodec/mpeg12dec.c     |  20 --
17
- 8 files changed, 1557 insertions(+), 20 deletions(-)
18
- create mode 100644 libavcodec/dxva2_dec.c
19
- create mode 100644 libavcodec/dxva2_wrapper.c
20
- create mode 100644 libavcodec/dxva2_wrapper.h
21
-
22
-diff --git a/configure b/configure
23
-index c046e34..088a3d4 100755
24
---- a/configure
25
-+++ b/configure
26
-@@ -2273,6 +2273,7 @@ h263_vaapi_hwaccel_select="h263_decoder"
27
- h263_vdpau_hwaccel_deps="vdpau"
28
- h263_vdpau_hwaccel_select="h263_decoder"
29
- h264_crystalhd_decoder_select="crystalhd h264_mp4toannexb_bsf h264_parser"
30
-+h264_dxva2_decoder_select="dxva2 h264_parser h264_decoder h264_dxva2_hwaccel"
31
- h264_dxva2_hwaccel_deps="dxva2"
32
- h264_dxva2_hwaccel_select="h264_decoder"
33
- h264_vaapi_hwaccel_deps="vaapi"
34
-@@ -2304,6 +2305,7 @@ mpeg2_vaapi_hwaccel_deps="vaapi"
35
- mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
36
- mpeg2_vdpau_hwaccel_deps="vdpau"
37
- mpeg2_vdpau_hwaccel_select="mpeg2video_decoder"
38
-+mpeg2video_dxva2_decoder_select="dxva2 mpeg2video_decoder mpeg2_dxva2_hwaccel"
39
- mpeg2_xvmc_hwaccel_deps="xvmc"
40
- mpeg2_xvmc_hwaccel_select="mpeg2video_decoder"
41
- mpeg4_crystalhd_decoder_select="crystalhd"
42
-@@ -2315,6 +2317,7 @@ mpeg4_vdpau_hwaccel_deps="vdpau"
43
- mpeg4_vdpau_hwaccel_select="mpeg4_decoder"
44
- msmpeg4_crystalhd_decoder_select="crystalhd"
45
- vc1_crystalhd_decoder_select="crystalhd"
46
-+vc1_dxva2_decoder_select="dxva2 vc1_decoder vc1_dxva2_hwaccel"
47
- vc1_dxva2_hwaccel_deps="dxva2"
48
- vc1_dxva2_hwaccel_select="vc1_decoder"
49
- vc1_vaapi_hwaccel_deps="vaapi"
50
-@@ -2324,6 +2327,7 @@ vc1_vdpau_decoder_select="vc1_decoder"
51
- vc1_vdpau_hwaccel_deps="vdpau"
52
- vc1_vdpau_hwaccel_select="vc1_decoder"
53
- wmv3_crystalhd_decoder_select="crystalhd"
54
-+wmv3_dxva2_decoder_select="dxva2 wmv3_decoder wmv3_dxva2_hwaccel"
55
- wmv3_dxva2_hwaccel_select="vc1_dxva2_hwaccel"
56
- wmv3_vaapi_hwaccel_select="vc1_vaapi_hwaccel"
57
- wmv3_vdpau_decoder_select="vc1_vdpau_decoder"
58
-diff --git a/libavcodec/Makefile b/libavcodec/Makefile
59
-index fa0f53d..ffbb77c 100644
60
---- a/libavcodec/Makefile
61
-+++ b/libavcodec/Makefile
62
-@@ -259,6 +259,7 @@ OBJS-$(CONFIG_H264_DECODER)            += h264.o h264_cabac.o h264_cavlc.o \
63
-                                           h264_direct.o h264_loopfilter.o  \
64
-                                           h264_mb.o h264_picture.o h264_ps.o \
65
-                                           h264_refs.o h264_sei.o h264_slice.o
66
-+OBJS-$(CONFIG_H264_DXVA2_DECODER)      += dxva2_wrapper.o dxva2_dec.o
67
- OBJS-$(CONFIG_H264_VDA_DECODER)        += vda_h264_dec.o
68
- OBJS-$(CONFIG_HEVC_DECODER)            += hevc.o hevc_mvs.o hevc_ps.o hevc_sei.o \
69
-                                           hevc_cabac.o hevc_refs.o hevcpred.o    \
70
-@@ -325,6 +326,7 @@ OBJS-$(CONFIG_MPEGVIDEO_DECODER)       += mpeg12dec.o mpeg12.o mpeg12data.o
71
- OBJS-$(CONFIG_MPEG1VIDEO_DECODER)      += mpeg12dec.o mpeg12.o mpeg12data.o
72
- OBJS-$(CONFIG_MPEG1VIDEO_ENCODER)      += mpeg12enc.o mpeg12.o
73
- OBJS-$(CONFIG_MPEG2VIDEO_DECODER)      += mpeg12dec.o mpeg12.o mpeg12data.o
74
-+OBJS-$(CONFIG_MPEG2VIDEO_DXVA2_DECODER)+= dxva2_wrapper.o dxva2_dec.o
75
- OBJS-$(CONFIG_MPEG2VIDEO_ENCODER)      += mpeg12enc.o mpeg12.o
76
- OBJS-$(CONFIG_MPEG4_DECODER)           += xvididct.o
77
- OBJS-$(CONFIG_MPL2_DECODER)            += mpl2dec.o ass.o
78
-@@ -482,6 +484,7 @@ OBJS-$(CONFIG_VC1_DECODER)             += vc1dec.o vc1_block.o vc1_loopfilter.o
79
-                                           vc1dsp.o \
80
-                                           msmpeg4dec.o msmpeg4.o msmpeg4data.o \
81
-                                           wmv2dsp.o
82
-+OBJS-$(CONFIG_VC1_DXVA2_DECODER)       += dxva2_wrapper.o dxva2_dec.o
83
- OBJS-$(CONFIG_VCR1_DECODER)            += vcr1.o
84
- OBJS-$(CONFIG_VMDAUDIO_DECODER)        += vmdaudio.o
85
- OBJS-$(CONFIG_VMDVIDEO_DECODER)        += vmdvideo.o
86
-@@ -521,6 +524,7 @@ OBJS-$(CONFIG_WMV2_DECODER)            += wmv2dec.o wmv2.o wmv2dsp.o \
87
-                                           msmpeg4dec.o msmpeg4.o msmpeg4data.o
88
- OBJS-$(CONFIG_WMV2_ENCODER)            += wmv2enc.o wmv2.o wmv2dsp.o \
89
-                                           msmpeg4.o msmpeg4enc.o msmpeg4data.o
90
-+OBJS-$(CONFIG_WMV3_DXVA2_DECODER)      += dxva2_wrapper.o dxva2_dec.o
91
- OBJS-$(CONFIG_WNV1_DECODER)            += wnv1.o
92
- OBJS-$(CONFIG_WS_SND1_DECODER)         += ws-snd1.o
93
- OBJS-$(CONFIG_XAN_DPCM_DECODER)        += dpcm.o
94
-diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
95
-index 0d39d33..548f0ef 100644
96
---- a/libavcodec/allcodecs.c
97
-+++ b/libavcodec/allcodecs.c
98
-@@ -169,6 +169,7 @@ void avcodec_register_all(void)
99
-     REGISTER_ENCDEC (H263P,             h263p);
100
-     REGISTER_DECODER(H264,              h264);
101
-     REGISTER_DECODER(H264_CRYSTALHD,    h264_crystalhd);
102
-+    REGISTER_DECODER (H264_DXVA2, h264_dxva2);
103
-     REGISTER_DECODER(H264_VDA,          h264_vda);
104
-     REGISTER_DECODER(H264_VDPAU,        h264_vdpau);
105
-     REGISTER_DECODER(HEVC,              hevc);
106
-@@ -201,6 +202,7 @@ void avcodec_register_all(void)
107
- #endif /* FF_API_XVMC */
108
-     REGISTER_ENCDEC (MPEG1VIDEO,        mpeg1video);
109
-     REGISTER_ENCDEC (MPEG2VIDEO,        mpeg2video);
110
-+    REGISTER_DECODER (MPEG2VIDEO_DXVA2, mpeg2video_dxva2);
111
-     REGISTER_ENCDEC (MPEG4,             mpeg4);
112
-     REGISTER_DECODER(MPEG4_CRYSTALHD,   mpeg4_crystalhd);
113
-     REGISTER_DECODER(MPEG4_VDPAU,       mpeg4_vdpau);
114
-@@ -285,6 +287,7 @@ void avcodec_register_all(void)
115
-     REGISTER_DECODER(VBLE,              vble);
116
-     REGISTER_DECODER(VC1,               vc1);
117
-     REGISTER_DECODER(VC1_CRYSTALHD,     vc1_crystalhd);
118
-+    REGISTER_DECODER (VC1_DXVA2, vc1_dxva2);
119
-     REGISTER_DECODER(VC1_VDPAU,         vc1_vdpau);
120
-     REGISTER_DECODER(VC1IMAGE,          vc1image);
121
-     REGISTER_DECODER(VCR1,              vcr1);
122
-@@ -304,6 +307,7 @@ void avcodec_register_all(void)
123
-     REGISTER_ENCDEC (WMV2,              wmv2);
124
-     REGISTER_DECODER(WMV3,              wmv3);
125
-     REGISTER_DECODER(WMV3_CRYSTALHD,    wmv3_crystalhd);
126
-+    REGISTER_DECODER (WMV3_DXVA2, wmv3_dxva2);
127
-     REGISTER_DECODER(WMV3_VDPAU,        wmv3_vdpau);
128
-     REGISTER_DECODER(WMV3IMAGE,         wmv3image);
129
-     REGISTER_DECODER(WNV1,              wnv1);
130
-diff --git a/libavcodec/dxva2_dec.c b/libavcodec/dxva2_dec.c
131
-new file mode 100644
132
-index 0000000..e6b31cf
133
---- /dev/null
134
-+++ b/libavcodec/dxva2_dec.c
135
-@@ -0,0 +1,356 @@
136
-+/*
137
-+ * Call hardware decode acceleration through dxva2 API
138
-+ *
139
-+ * Copyright (c) 2012 Wei Gao <weigao@multicorewareinc.com>
140
-+ *
141
-+ * This file is part of FFmpeg.
142
-+ *
143
-+ * FFmpeg is free software; you can redistribute it and/or
144
-+ * modify it under the terms of the GNU Lesser General Public
145
-+ * License as published by the Free Software Foundation; either
146
-+ * version 2.1 of the License, or (at your option) any later version.
147
-+ *
148
-+ * FFmpeg is distributed in the hope that it will be useful,
149
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
150
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
151
-+ * Lesser General Public License for more details.
152
-+ *
153
-+ * You should have received a copy of the GNU Lesser General Public
154
-+ * License along with FFmpeg; if not, write to the Free Software
155
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
156
-+ */
157
-+
158
-+#include <string.h>
159
-+#include "dxva2_wrapper.h"
160
-+#include "h264.h"
161
-+#include "vc1.h"
162
-+#include "mpeg12.h"
163
-+#include "avcodec.h"
164
-+#include "internal.h"
165
-+
166
-+#if CONFIG_H264_DXVA2_DECODER
167
-+extern AVCodec ff_h264_decoder,ff_h264_dxva2_decoder;
168
-+#endif
169
-+
170
-+#if CONFIG_MPEG2VIDEO_DXVA2_DECODER
171
-+extern AVCodec ff_mpeg2video_decoder,ff_mpeg2video_dxva2_decoder;
172
-+#endif
173
-+
174
-+#if CONFIG_VC1_DXVA2_DECODER
175
-+extern AVCodec ff_vc1_decoder,ff_vc1_dxva2_decoder;
176
-+#endif
177
-+
178
-+#if CONFIG_WMV3_DXVA2_DECODER
179
-+extern AVCodec ff_wmv3_decoder, ff_wmv3_dxva2_decoder;
180
-+#endif
181
-+
182
-+typedef union {
183
-+#if CONFIG_H264_DXVA2_DECODER
184
-+    H264Context        h264ctx;
185
-+#endif
186
-+#if CONFIG_VC1_DXVA2_DECODER || CONFIG_WMV3_DXVA2_DECODER
187
-+    VC1Context         vc1ctx;
188
-+#endif
189
-+#if CONFIG_MPEG2VIDEO_DXVA2_DECODER
190
-+    Mpeg1Context       mpeg2videoctx;
191
-+#endif
192
-+}DecoderContext;
193
-+
194
-+typedef struct {
195
-+    DecoderContext          decoderctx;
196
-+    enum AVPixelFormat      pix_fmt;
197
-+    int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags);
198
-+    AVCodec                 *hwcodec;
199
-+    AVCodec                 *codec;
200
-+    dxva2_context           dxva2_ctx;
201
-+} DXVA2_DecoderContext;
202
-+
203
-+static const enum AVPixelFormat dxva2_pixfmts[] = {
204
-+    AV_PIX_FMT_YUV420P,
205
-+    AV_PIX_FMT_NONE
206
-+};
207
-+static int check_format(AVCodecContext *avctx);
208
-+
209
-+static void get_hw_soft_codec(struct AVCodecContext *avctx,DXVA2_DecoderContext *ctx)
210
-+{
211
-+    switch (avctx->codec_id) {
212
-+        #if CONFIG_H264_DXVA2_DECODER
213
-+        case AV_CODEC_ID_H264:
214
-+            ctx->hwcodec = &ff_h264_dxva2_decoder;
215
-+            ctx->codec   = &ff_h264_decoder;
216
-+            return;
217
-+        #endif
218
-+        #if CONFIG_MPEG2VIDEO_DXVA2_DECODER
219
-+        case AV_CODEC_ID_MPEG2VIDEO:
220
-+            ctx->hwcodec = &ff_mpeg2video_dxva2_decoder;
221
-+            ctx->codec   = &ff_mpeg2video_decoder;
222
-+            return;
223
-+        #endif
224
-+        #if CONFIG_VC1_DXVA2_DECODER
225
-+        case AV_CODEC_ID_VC1:
226
-+            ctx->hwcodec = &ff_vc1_dxva2_decoder;
227
-+            ctx->codec   = &ff_vc1_decoder;
228
-+            return;
229
-+        #endif
230
-+        #if CONFIG_WMV3_DXVA2_DECODER
231
-+        case AV_CODEC_ID_WMV3:
232
-+            ctx->hwcodec = &ff_wmv3_dxva2_decoder;
233
-+            ctx->codec   = &ff_wmv3_decoder;
234
-+            return;
235
-+        #endif
236
-+    }
237
-+}
238
-+
239
-+static int get_buffer2(struct AVCodecContext *avctx, AVFrame *pic, int flags)
240
-+{
241
-+    int ret;
242
-+    DXVA2_DecoderContext *ctx = (DXVA2_DecoderContext *)avctx->priv_data;
243
-+    dxva2_context *dxva2_ctx = &ctx->dxva2_ctx;
244
-+    avctx->pix_fmt = ctx->pix_fmt;
245
-+    ff_init_buffer_info(avctx, pic);
246
-+
247
-+    if ((ret = ctx->get_buffer2(avctx, pic, flags)) < 0) {
248
-+        return ret;
249
-+    }
250
-+    if (dxva2_ctx) {
251
-+        ff_get_dxva2_surface(dxva2_ctx, pic);
252
-+        return 0;
253
-+    } else {
254
-+        av_log(avctx, AV_LOG_ERROR, "No dxva2 context, get buffer failed\n");
255
-+        return AVERROR(EINVAL);
256
-+    }
257
-+}
258
-+
259
-+static enum PixelFormat get_format(AVCodecContext *p_context,
260
-+                                       const enum PixelFormat *pi_fmt)
261
-+{
262
-+     return AV_PIX_FMT_DXVA2_VLD;
263
-+}
264
-+
265
-+static int dxva2dec_decode(AVCodecContext *avctx, void *data, int *got_frame,
266
-+                                  AVPacket *avpkt)
267
-+{
268
-+    DXVA2_DecoderContext *ctx = (DXVA2_DecoderContext *)avctx->priv_data;
269
-+    AVFrame *pic = data;
270
-+    int ret;
271
-+    AVCodec *codec = ctx->codec;
272
-+    /* check if DXVA2 supports this file */
273
-+    if (check_format(avctx) < 0)
274
-+        return AVERROR(EINVAL);
275
-+    ret = codec->decode(avctx, data, got_frame, avpkt);
276
-+    if (*got_frame) {
277
-+        pic->format = ctx->pix_fmt;
278
-+        ff_extract_dxva2(&ctx->dxva2_ctx, pic);
279
-+    }
280
-+    avctx->pix_fmt = ctx->pix_fmt;
281
-+    return ret;
282
-+}
283
-+
284
-+static av_cold int dxva2dec_close(AVCodecContext *avctx)
285
-+{
286
-+    DXVA2_DecoderContext *ctx = avctx->priv_data;
287
-+    AVCodec *codec = ctx->codec;
288
-+    codec->flush(avctx);
289
-+    /* release buffers and decoder */
290
-+    ff_release_dxva2(&ctx->dxva2_ctx);
291
-+    /* close decoder */
292
-+    codec->close(avctx);
293
-+    return 0;
294
-+}
295
-+static int get_mpeg2_video_format(AVCodecContext *avctx)
296
-+{
297
-+    GetBitContext gb;
298
-+    const uint8_t *buf_ptr = avctx->extradata;
299
-+    const uint8_t *buf_end = avctx->extradata + avctx->extradata_size;
300
-+    int input_size, format = -1;
301
-+    if (avctx->extradata) {
302
-+        for (;;) {
303
-+            uint32_t start_code = UINT32_MAX;
304
-+            buf_ptr = avpriv_find_start_code(buf_ptr, buf_end, &start_code);
305
-+            input_size = buf_end - buf_ptr;
306
-+            if (input_size <= 0) {
307
-+                break;
308
-+            }
309
-+            if (EXT_START_CODE == start_code) {
310
-+                init_get_bits(&gb, buf_ptr, input_size * 8);
311
-+                switch (get_bits(&gb, 4)) {
312
-+                    case 0x1:
313
-+                        skip_bits(&gb, 9);
314
-+                        format = get_bits(&gb, 2);
315
-+                        return format;
316
-+                }
317
-+            }
318
-+        }
319
-+    }
320
-+    av_log(avctx, AV_LOG_ERROR,"get_mpeg2_video_format error\n");
321
-+    return format;
322
-+}
323
-+
324
-+static int check_format(AVCodecContext *avctx)
325
-+{
326
-+    uint8_t *pout;
327
-+    int psize, index, ret = -1;
328
-+    H264Context *h;
329
-+    AVCodecParserContext *parser = NULL;
330
-+    /* check if support */
331
-+    switch (avctx->codec_id) {
332
-+    case AV_CODEC_ID_H264:
333
-+        /* init parser & parse file */
334
-+        parser = av_parser_init(avctx->codec->id);
335
-+        if (!parser) {
336
-+            av_log(avctx, AV_LOG_ERROR, "Failed to open parser.\n");
337
-+            return ret;
338
-+        }
339
-+        parser->flags = PARSER_FLAG_COMPLETE_FRAMES;
340
-+        index = av_parser_parse2(parser, avctx, &pout, &psize, NULL, 0, 0, 0, 0);
341
-+        if (index < 0) {
342
-+            av_log(avctx, AV_LOG_ERROR, "Failed to parse this file.\n");
343
-+            av_parser_close(parser);
344
-+            return ret;
345
-+        }
346
-+        h = parser->priv_data;
347
-+        if (8 == h->sps.bit_depth_luma) {
348
-+            if (!CHROMA444(h) && !CHROMA422(h)) {
349
-+                // only this will decoder switch to hwaccel
350
-+                //check the profile
351
-+                if ((FF_PROFILE_H264_BASELINE == h->sps.profile_idc) ||
352
-+                    (FF_PROFILE_H264_MAIN == h->sps.profile_idc) ||
353
-+                    (FF_PROFILE_H264_HIGH == h->sps.profile_idc)) {
354
-+                    ret = 0;
355
-+                }
356
-+            }
357
-+        }
358
-+        break;
359
-+    case AV_CODEC_ID_MPEG2VIDEO:
360
-+        if (CHROMA_420 == get_mpeg2_video_format(avctx)) {
361
-+            ret = 0;
362
-+        }
363
-+        break;
364
-+    default:
365
-+        ret = 0;
366
-+        break;
367
-+    }
368
-+    
369
-+    if (0 > ret) {
370
-+        av_log(avctx, AV_LOG_ERROR, "Unsupported file.\n");
371
-+    }
372
-+    if (parser) {
373
-+        av_parser_close(parser);
374
-+    }
375
-+    return ret;
376
-+}
377
-+
378
-+static av_cold int dxva2dec_init(AVCodecContext *avctx)
379
-+{
380
-+    DXVA2_DecoderContext *ctx = (DXVA2_DecoderContext *)avctx->priv_data;
381
-+    dxva2_context *dxva2_ctx = (dxva2_context *)(&ctx->dxva2_ctx);
382
-+    AVCodec *hwcodec, *codec;
383
-+    int ret;
384
-+    get_hw_soft_codec(avctx,ctx);
385
-+    hwcodec = ctx->hwcodec;
386
-+    codec = ctx->codec;
387
-+    /* init pix_fmts of codec */
388
-+    if (!hwcodec->pix_fmts) {
389
-+        hwcodec->pix_fmts = dxva2_pixfmts;
390
-+    }
391
-+    /* check if DXVA2 supports this file */
392
-+    if (check_format(avctx) < 0)
393
-+        return AVERROR(EINVAL);
394
-+
395
-+    /* init vda */
396
-+    memset(dxva2_ctx, 0, sizeof(dxva2_context));
397
-+    ret = ff_create_dxva2(avctx->codec_id, dxva2_ctx);
398
-+    if (ret < 0) {
399
-+        av_log(avctx, AV_LOG_ERROR, "create dxva2 error\n");
400
-+        return AVERROR(EINVAL);
401
-+    }
402
-+    ctx->pix_fmt = avctx->get_format(avctx, avctx->codec->pix_fmts);
403
-+    ret = ff_setup_dxva2(dxva2_ctx, &avctx->hwaccel_context, &avctx->pix_fmt, avctx->width, avctx->height);
404
-+    if (ret < 0) {
405
-+        av_log(avctx,AV_LOG_ERROR,"error DXVA setup %d\n", ret);
406
-+        ret = AVERROR(EINVAL);
407
-+        goto failed;
408
-+    }
409
-+    avctx->slice_flags |= SLICE_FLAG_ALLOW_FIELD;
410
-+    /* changes callback functions */
411
-+    ctx->get_buffer2 = avctx->get_buffer2;
412
-+    avctx->get_format = get_format;
413
-+    avctx->get_buffer2 = get_buffer2;
414
-+    /* init decoder */
415
-+
416
-+    ret = codec->init(avctx);
417
-+    if (ret < 0) {
418
-+        av_log(avctx, AV_LOG_ERROR, "Failed to open decoder.\n");
419
-+        goto failed;
420
-+    }
421
-+    return 0;
422
-+failed:
423
-+    dxva2dec_close(avctx);
424
-+    return ret;
425
-+}
426
-+
427
-+static void dxva2dec_flush(AVCodecContext *avctx)
428
-+{
429
-+    DXVA2_DecoderContext *ctx = (DXVA2_DecoderContext *)avctx->priv_data;
430
-+    AVCodec *codec = ctx->codec;
431
-+    return codec->flush(avctx);
432
-+}
433
-+#if CONFIG_H264_DXVA2_DECODER
434
-+AVCodec ff_h264_dxva2_decoder = {
435
-+    .name           = "h264_dxva2",
436
-+    .type           = AVMEDIA_TYPE_VIDEO,
437
-+    .id             = AV_CODEC_ID_H264,
438
-+    .priv_data_size = sizeof(DXVA2_DecoderContext),
439
-+    .init           = dxva2dec_init,
440
-+    .close          = dxva2dec_close,
441
-+    .decode         = dxva2dec_decode,
442
-+    .capabilities   = CODEC_CAP_DELAY,
443
-+    .flush          = dxva2dec_flush,
444
-+    .long_name      = NULL_IF_CONFIG_SMALL("H.264 (DXVA2 acceleration)"),
445
-+};
446
-+#endif
447
-+
448
-+#if CONFIG_MPEG2VIDEO_DXVA2_DECODER
449
-+AVCodec ff_mpeg2video_dxva2_decoder = {
450
-+    .name           = "mpeg2video_dxva2",
451
-+    .type           = AVMEDIA_TYPE_VIDEO,
452
-+    .id             = AV_CODEC_ID_MPEG2VIDEO,
453
-+    .priv_data_size = sizeof(DXVA2_DecoderContext),
454
-+    .init           = dxva2dec_init,
455
-+    .close          = dxva2dec_close,
456
-+    .decode         = dxva2dec_decode,
457
-+    .capabilities   = CODEC_CAP_DELAY,
458
-+    .flush          = dxva2dec_flush,
459
-+    .long_name      = NULL_IF_CONFIG_SMALL("MPEG2 Video (DXVA2 acceleration)"),
460
-+};
461
-+#endif
462
-+
463
-+#if CONFIG_VC1_DXVA2_DECODER
464
-+AVCodec ff_vc1_dxva2_decoder = {
465
-+    .name           = "vc1_dxva2",
466
-+    .type           = AVMEDIA_TYPE_VIDEO,
467
-+    .id             = AV_CODEC_ID_VC1,
468
-+    .priv_data_size = sizeof(DXVA2_DecoderContext),
469
-+    .init           = dxva2dec_init,
470
-+    .close          = dxva2dec_close,
471
-+    .decode         = dxva2dec_decode,
472
-+    .capabilities   = CODEC_CAP_DELAY,
473
-+    .flush          = dxva2dec_flush,
474
-+    .long_name      = NULL_IF_CONFIG_SMALL("VC1 (DXVA2 acceleration)"),
475
-+};
476
-+#endif
477
-+
478
-+#if CONFIG_WMV3_DXVA2_DECODER
479
-+AVCodec ff_wmv3_dxva2_decoder = {
480
-+    .name           = "wmv3_dxva2",
481
-+    .type           = AVMEDIA_TYPE_VIDEO,
482
-+    .id             = AV_CODEC_ID_WMV3,
483
-+    .priv_data_size = sizeof(DXVA2_DecoderContext),
484
-+    .init           = dxva2dec_init,
485
-+    .close          = dxva2dec_close,
486
-+    .decode         = dxva2dec_decode,
487
-+    .capabilities   = CODEC_CAP_DELAY,
488
-+    .flush          = dxva2dec_flush,
489
-+    .long_name      = NULL_IF_CONFIG_SMALL("WMV3 (DXVA2 acceleration)"),
490
-+};
491
-+#endif
492
-diff --git a/libavcodec/dxva2_wrapper.c b/libavcodec/dxva2_wrapper.c
493
-new file mode 100644
494
-index 0000000..7fceb74
495
---- /dev/null
496
-+++ b/libavcodec/dxva2_wrapper.c
497
-@@ -0,0 +1,777 @@
498
-+/*
499
-+ * Call hardware decode acceleration through dxva2 API
500
-+ *
501
-+ * Copyright (C) 2009 Geoffroy Couprie
502
-+ * Copyright (C) 2009 Laurent Aimar
503
-+ * $Id: 0af77c6633657d4a700a3f60e5ff7c417086822f $
504
-+ *
505
-+ * Authors: Geoffroy Couprie <geal@videolan.org>
506
-+ *          Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
507
-+ * Modified by Wei Gao <weigao@multicorewareinc.com>
508
-+ *
509
-+ * Attribute from VLC
510
-+ *
511
-+ * This file is part of FFmpeg.
512
-+ *
513
-+ * FFmpeg is free software; you can redistribute it and/or
514
-+ * modify it under the terms of the GNU Lesser General Public
515
-+ * License as published by the Free Software Foundation; either
516
-+ * version 2.1 of the License, or (at your option) any later version.
517
-+ *
518
-+ * FFmpeg is distributed in the hope that it will be useful,
519
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
520
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
521
-+ * Lesser General Public License for more details.
522
-+ *
523
-+ * You should have received a copy of the GNU Lesser General Public
524
-+ * License along with FFmpeg; if not, write to the Free Software
525
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
526
-+ */
527
-+
528
-+#include "dxva2_wrapper.h"
529
-+#include <dxgi.h>
530
-+
531
-+/* XXX Prefered format must come first */
532
-+static const d3d_format_t d3d_formats[] = {
533
-+    { "YV12",   (D3DFORMAT)MAKEFOURCC('Y','V','1','2'),    AV_PIX_FMT_YUV420P },
534
-+    { "NV12",   (D3DFORMAT)MAKEFOURCC('N','V','1','2'),    AV_PIX_FMT_NV12 },
535
-+    { NULL, (D3DFORMAT)0, PIX_FMT_NONE }
536
-+};
537
-+
538
-+static const GUID DXVA2_ModeMPEG2_MoComp = {
539
-+    0xe6a9f44b, 0x61b0,0x4563, {0x9e,0xa4,0x63,0xd2,0xa3,0xc6,0xfe,0x66}
540
-+};
541
-+static const GUID DXVA2_ModeMPEG2_IDCT = {
542
-+    0xbf22ad00, 0x03ea,0x4690, {0x80,0x77,0x47,0x33,0x46,0x20,0x9b,0x7e}
543
-+};
544
-+static const GUID DXVA2_ModeMPEG2_VLD = {
545
-+    0xee27417f, 0x5e28,0x4e65, {0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9}
546
-+};
547
-+static const GUID DXVA2_ModeMPEG2and1_VLD = {
548
-+    0x86695f12, 0x340e,0x4f04, {0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60}
549
-+};
550
-+static const GUID DXVA2_ModeMPEG1_VLD = {
551
-+    0x6f3ec719, 0x3735,0x42cc, {0x80,0x63,0x65,0xcc,0x3c,0xb3,0x66,0x16}
552
-+};
553
-+
554
-+static const GUID DXVA2_ModeH264_A = {
555
-+    0x1b81be64, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
556
-+};
557
-+static const GUID DXVA2_ModeH264_B = {
558
-+    0x1b81be65, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
559
-+};
560
-+static const GUID DXVA2_ModeH264_C = {
561
-+    0x1b81be66, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
562
-+};
563
-+static const GUID DXVA2_ModeH264_D = {
564
-+    0x1b81be67, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
565
-+};
566
-+static const GUID DXVA2_ModeH264_E = {
567
-+    0x1b81be68, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
568
-+};
569
-+static const GUID DXVA2_ModeH264_F = {
570
-+    0x1b81be69, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
571
-+};
572
-+static const GUID DXVA_ModeH264_VLD_WithFMOASO_NoFGT = {
573
-+    0xd5f04ff9, 0x3418,0x45d8, {0x95,0x61,0x32,0xa7,0x6a,0xae,0x2d,0xdd}
574
-+};
575
-+static const GUID DXVADDI_Intel_ModeH264_A = {
576
-+    0x604F8E64, 0x4951,0x4c54, {0x88,0xFE,0xAB,0xD2,0x5C,0x15,0xB3,0xD6}
577
-+};
578
-+static const GUID DXVADDI_Intel_ModeH264_C = {
579
-+    0x604F8E66, 0x4951,0x4c54, {0x88,0xFE,0xAB,0xD2,0x5C,0x15,0xB3,0xD6}
580
-+};
581
-+static const GUID DXVADDI_Intel_ModeH264_E = { // DXVA_Intel_H264_ClearVideo
582
-+    0x604F8E68, 0x4951,0x4c54, {0x88,0xFE,0xAB,0xD2,0x5C,0x15,0xB3,0xD6}
583
-+};
584
-+static const GUID DXVA2_ModeWMV8_A = {
585
-+    0x1b81be80, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
586
-+};
587
-+static const GUID DXVA2_ModeWMV8_B = {
588
-+    0x1b81be81, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
589
-+};
590
-+static const GUID DXVA2_ModeWMV9_A = {
591
-+    0x1b81be90, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
592
-+};
593
-+static const GUID DXVA2_ModeWMV9_B = {
594
-+    0x1b81be91, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
595
-+};
596
-+static const GUID DXVA2_ModeWMV9_C = {
597
-+    0x1b81be94, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
598
-+};
599
-+
600
-+static const GUID DXVA2_ModeVC1_A = {
601
-+    0x1b81beA0, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
602
-+};
603
-+static const GUID DXVA2_ModeVC1_B = {
604
-+    0x1b81beA1, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
605
-+};
606
-+static const GUID DXVA2_ModeVC1_C = {
607
-+    0x1b81beA2, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
608
-+};
609
-+static const GUID DXVA2_ModeVC1_D = {
610
-+    0x1b81beA3, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
611
-+};
612
-+/* Conformity to the August 2010 update of the specification, ModeVC1_VLD2010 */
613
-+static const GUID DXVA2_ModeVC1_D2010 = {
614
-+    0x1b81beA4, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
615
-+};
616
-+
617
-+static const GUID DXVA_NoEncrypt = {
618
-+    0x1b81bed0, 0xa0c7,0x11d3, {0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5}
619
-+};
620
-+
621
-+static const GUID DXVA_Intel_VC1_ClearVideo = {
622
-+    0xBCC5DB6D, 0xA2B6,0x4AF0, {0xAC,0xE4,0xAD,0xB1,0xF7,0x87,0xBC,0x89}
623
-+};
624
-+
625
-+static const GUID DXVA_nVidia_MPEG4_ASP = {
626
-+    0x9947EC6F, 0x689B,0x11DC, {0xA3,0x20,0x00,0x19,0xDB,0xBC,0x41,0x84}
627
-+};
628
-+static const GUID DXVA_ModeMPEG4pt2_VLD_Simple = {
629
-+    0xefd64d74, 0xc9e8,0x41d7, {0xa5,0xe9,0xe9,0xb0,0xe3,0x9f,0xa3,0x19}
630
-+};
631
-+static const GUID DXVA_ModeMPEG4pt2_VLD_AdvSimple_NoGMC = {
632
-+    0xed418a9f, 0x10d,0x4eda,  {0x9a,0xe3,0x9a,0x65,0x35,0x8d,0x8d,0x2e}
633
-+};
634
-+static const GUID DXVA_ModeMPEG4pt2_VLD_AdvSimple_GMC = {
635
-+    0xab998b5b, 0x4258,0x44a9, {0x9f,0xeb,0x94,0xe5,0x97,0xa6,0xba,0xae}
636
-+};
637
-+
638
-+static const GUID IID_IDirectXVideoDecoderService = {
639
-+    0xfc51a551, 0xd5e7, 0x11d9, {0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02}
640
-+};
641
-+static const GUID IID_IDirectXVideoAccelerationService = {
642
-+    0xfc51a550, 0xd5e7, 0x11d9, {0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02}
643
-+};
644
-+
645
-+/* XXX Prefered modes must come first */
646
-+static const dxva2_mode_t dxva2_modes[] = {
647
-+    { "MPEG-2 variable-length decoder",            &DXVA2_ModeMPEG2_VLD,     AV_CODEC_ID_MPEG2VIDEO },
648
-+    { "MPEG-2 & MPEG-1 variable-length decoder",   &DXVA2_ModeMPEG2and1_VLD, AV_CODEC_ID_MPEG2VIDEO },
649
-+    { "MPEG-2 motion compensation",                &DXVA2_ModeMPEG2_MoComp,  0 },
650
-+    { "MPEG-2 inverse discrete cosine transform",  &DXVA2_ModeMPEG2_IDCT,    0 },
651
-+
652
-+    { "MPEG-1 variable-length decoder",            &DXVA2_ModeMPEG1_VLD,     0 },
653
-+
654
-+    { "H.264 variable-length decoder, film grain technology",                      &DXVA2_ModeH264_F,                   AV_CODEC_ID_H264 },
655
-+    { "H.264 variable-length decoder, no film grain technology",                   &DXVA2_ModeH264_E,                   AV_CODEC_ID_H264 },
656
-+    { "H.264 variable-length decoder, no film grain technology (Intel ClearVideo)",&DXVADDI_Intel_ModeH264_E,           AV_CODEC_ID_H264 },
657
-+    { "H.264 variable-length decoder, no film grain technology, FMO/ASO",          &DXVA_ModeH264_VLD_WithFMOASO_NoFGT, AV_CODEC_ID_H264 },
658
-+    { "H.264 inverse discrete cosine transform, film grain technology",            &DXVA2_ModeH264_D,                   0             },
659
-+    { "H.264 inverse discrete cosine transform, no film grain technology",         &DXVA2_ModeH264_C,                   0             },
660
-+    { "H.264 inverse discrete cosine transform, no film grain technology (Intel)", &DXVADDI_Intel_ModeH264_C,           0             },
661
-+    { "H.264 motion compensation, film grain technology",                          &DXVA2_ModeH264_B,                   0             },
662
-+    { "H.264 motion compensation, no film grain technology",                       &DXVA2_ModeH264_A,                   0             },
663
-+    { "H.264 motion compensation, no film grain technology (Intel)",               &DXVADDI_Intel_ModeH264_A,           0             },
664
-+
665
-+    { "Windows Media Video 8 motion compensation", &DXVA2_ModeWMV8_B, 0 },
666
-+    { "Windows Media Video 8 post processing",     &DXVA2_ModeWMV8_A, 0 },
667
-+
668
-+    { "Windows Media Video 9 IDCT",                &DXVA2_ModeWMV9_C, 0 },
669
-+    { "Windows Media Video 9 motion compensation", &DXVA2_ModeWMV9_B, 0 },
670
-+    { "Windows Media Video 9 post processing",     &DXVA2_ModeWMV9_A, 0 },
671
-+
672
-+    { "VC-1 variable-length decoder",              &DXVA2_ModeVC1_D, AV_CODEC_ID_VC1 },
673
-+    { "VC-1 variable-length decoder",              &DXVA2_ModeVC1_D, AV_CODEC_ID_WMV3 },
674
-+    { "VC-1 variable-length decoder",              &DXVA2_ModeVC1_D2010, AV_CODEC_ID_VC1 },
675
-+    { "VC-1 variable-length decoder",              &DXVA2_ModeVC1_D2010, AV_CODEC_ID_WMV3 },
676
-+    { "VC-1 inverse discrete cosine transform",    &DXVA2_ModeVC1_C, 0 },
677
-+    { "VC-1 motion compensation",                  &DXVA2_ModeVC1_B, 0 },
678
-+    { "VC-1 post processing",                      &DXVA2_ModeVC1_A, 0 },
679
-+
680
-+    { "VC-1 variable-length decoder (Intel)",      &DXVA_Intel_VC1_ClearVideo, 0 },
681
-+
682
-+    { "MPEG-4 Part 2 nVidia bitstream decoder",                                                         &DXVA_nVidia_MPEG4_ASP,                 0 },
683
-+    { "MPEG-4 Part 2 variable-length decoder, Simple Profile",                                          &DXVA_ModeMPEG4pt2_VLD_Simple,          0 },
684
-+    { "MPEG-4 Part 2 variable-length decoder, Simple&Advanced Profile, no global motion compensation",  &DXVA_ModeMPEG4pt2_VLD_AdvSimple_NoGMC, 0 },
685
-+    { "MPEG-4 Part 2 variable-length decoder, Simple&Advanced Profile, global motion compensation",     &DXVA_ModeMPEG4pt2_VLD_AdvSimple_GMC,   0 },
686
-+
687
-+    { NULL, NULL, 0 }
688
-+};
689
-+
690
-+typedef struct DXVA2Log {
691
-+    const AVClass *class;
692
-+    int   log_offset;
693
-+    void *log_ctx;
694
-+} DXVA2Log;
695
-+
696
-+static const AVClass dxva2wrapper_class = { "DXVA2WRAPPER", av_default_item_name, NULL,
697
-+                                            LIBAVUTIL_VERSION_INT, offsetof(DXVA2Log,
698
-+                                            log_offset), offsetof(DXVA2Log, log_ctx)};
699
-+static DXVA2Log dxva2wrapper = {&dxva2wrapper_class,0,NULL};
700
-+
701
-+static const d3d_format_t *d3d_find_format(D3DFORMAT format)
702
-+{
703
-+    for (unsigned i = 0; d3d_formats[i].name; i++) {
704
-+        if (d3d_formats[i].format == format)
705
-+            return &d3d_formats[i];
706
-+    }
707
-+    return NULL;
708
-+}
709
-+
710
-+static const dxva2_mode_t *dxva2_find_mode(const GUID *guid)
711
-+{
712
-+    for (unsigned i = 0; dxva2_modes[i].name; i++) {
713
-+        if (IsEqualGUID(dxva2_modes[i].guid, guid))
714
-+            return &dxva2_modes[i];
715
-+    }
716
-+    return NULL;
717
-+}
718
-+
719
-+/**
720
-+* It creates a Direct3D device usable for DXVA 2
721
-+*/
722
-+
723
-+static int d3d_create_device(dxva2_context *va)
724
-+{
725
-+    typedef LPDIRECT3D9 (WINAPI *Create9func)(UINT SDKVersion);
726
-+    typedef HWND (WINAPI *PROCGETSHELLWND)(void);
727
-+    Create9func dx_create9 = (Create9func )GetProcAddress(va->hd3d9_dll, TEXT("Direct3DCreate9"));
728
-+    LPDIRECT3D9 d3dobj;
729
-+    D3DADAPTER_IDENTIFIER9 *d3dai = &va->d3dai;
730
-+    PROCGETSHELLWND get_shell_window;
731
-+    HMODULE hUser32 = GetModuleHandle( "user32" );
732
-+    D3DPRESENT_PARAMETERS *d3dpp = &va->d3dpp;
733
-+    LPDIRECT3DDEVICE9 d3ddev;
734
-+    if (!dx_create9) {
735
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "Cannot locate reference to Direct3DCreate9 ABI in DLL");
736
-+        return AVERROR_EXTERNAL;
737
-+    }
738
-+    d3dobj = dx_create9(D3D_SDK_VERSION);
739
-+    if (!d3dobj) {
740
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "Direct3DCreate9 failed");
741
-+        return AVERROR_EXTERNAL;
742
-+    }
743
-+    va->d3dobj = d3dobj;
744
-+    if (FAILED(IDirect3D9_GetAdapterIdentifier(va->d3dobj,
745
-+        D3DADAPTER_DEFAULT, 0, d3dai))) {
746
-+            av_log(&dxva2wrapper, AV_LOG_WARNING, "IDirect3D9_GetAdapterIdentifier failed");
747
-+            ZeroMemory(d3dai, sizeof(*d3dai));
748
-+    }
749
-+    get_shell_window = (PROCGETSHELLWND)
750
-+                     GetProcAddress( hUser32, "GetShellWindow" );
751
-+    ZeroMemory(d3dpp, sizeof(*d3dpp));
752
-+    d3dpp->Flags = D3DPRESENTFLAG_VIDEO;
753
-+    d3dpp->Windowed = TRUE;
754
-+    d3dpp->hDeviceWindow = NULL;
755
-+    d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
756
-+    d3dpp->MultiSampleType = D3DMULTISAMPLE_NONE;
757
-+    d3dpp->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
758
-+    d3dpp->BackBufferCount = 0;
759
-+    d3dpp->BackBufferFormat = D3DFMT_X8R8G8B8;
760
-+    d3dpp->BackBufferWidth = 0;
761
-+    d3dpp->BackBufferHeight = 0;
762
-+    d3dpp->EnableAutoDepthStencil = FALSE;
763
-+    if (FAILED(IDirect3D9_CreateDevice(d3dobj, D3DADAPTER_DEFAULT,
764
-+        D3DDEVTYPE_HAL, get_shell_window(),
765
-+        D3DCREATE_SOFTWARE_VERTEXPROCESSING |
766
-+        D3DCREATE_MULTITHREADED,
767
-+        d3dpp, &d3ddev))) {
768
-+            av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirect3D9_CreateDevice failed\n");
769
-+            return AVERROR_EXTERNAL;
770
-+    }
771
-+    va->d3ddev = d3ddev;
772
-+    return 0;
773
-+}
774
-+
775
-+/**
776
-+* It releases a Direct3D device and its resources.
777
-+*/
778
-+
779
-+static void d3d_destroy_device(dxva2_context *va)
780
-+{
781
-+    if (va->d3ddev)
782
-+        IDirect3DDevice9_Release(va->d3ddev);
783
-+    if (va->d3dobj)
784
-+        IDirect3D9_Release(va->d3dobj);
785
-+}
786
-+/**
787
-+* It destroys a Direct3D device manager
788
-+*/
789
-+static void d3d_destroy_device_manager(dxva2_context *va)
790
-+{
791
-+    if (va->devmng)
792
-+        IDirect3DDeviceManager9_Release( va->devmng );
793
-+}
794
-+
795
-+static void dx_destroy_video_service(dxva2_context *va)
796
-+{
797
-+    if (va->device)
798
-+        IDirect3DDeviceManager9_CloseDeviceHandle(va->devmng, va->device);
799
-+
800
-+    if (va->vs)
801
-+        IDirectXVideoDecoderService_Release(va->vs);
802
-+}
803
-+
804
-+static void dx_destroy_video_decoder(dxva2_context *va)
805
-+{
806
-+    unsigned int i;
807
-+    if (va->decoder)
808
-+        IDirectXVideoDecoder_Release(va->decoder);
809
-+    va->decoder = NULL;
810
-+    for (i = 0; i< va->surface_count; i++)
811
-+        IDirect3DSurface9_Release(va->surface[i].d3d);
812
-+    va->surface_count = 0;
813
-+}
814
-+
815
-+static void close(dxva2_context *external)
816
-+{
817
-+    dxva2_context *va = external;
818
-+
819
-+    dx_destroy_video_decoder(va);
820
-+    dx_destroy_video_service(va);
821
-+    d3d_destroy_device_manager(va);
822
-+    d3d_destroy_device(va);
823
-+
824
-+    if (va->hdxva2_dll)
825
-+        FreeLibrary(va->hdxva2_dll);
826
-+    if (va->hd3d9_dll)
827
-+        FreeLibrary(va->hd3d9_dll);
828
-+}
829
-+
830
-+/**
831
-+* Find the best suited decoder mode GUID and render format.
832
-+*/
833
-+
834
-+static int dx_find_video_service_conversion(dxva2_context *va, GUID *input,
835
-+                                                      D3DFORMAT *output)
836
-+{
837
-+    /* Retrieve supported modes from the decoder service */
838
-+    unsigned int output_count, input_count = 0;
839
-+    GUID *input_list = NULL;
840
-+    int is_suported, i, j, k, count;
841
-+    D3DFORMAT *output_list;
842
-+    if (FAILED(IDirectXVideoDecoderService_GetDecoderDeviceGuids( va->vs, &input_count, &input_list ))) {
843
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirectXVideoDecoderService_GetDecoderDeviceGuids failed\n");
844
-+        return -1;
845
-+    }
846
-+    for (i = 0; i < input_count; i++) {
847
-+        const GUID *g = &input_list[i];
848
-+        const dxva2_mode_t *mode = dxva2_find_mode(g);
849
-+        if (mode) {
850
-+            av_log(&dxva2wrapper, AV_LOG_VERBOSE, "- '%s' is supported by hardware\n", mode->name);
851
-+        } else {
852
-+            av_log(&dxva2wrapper, AV_LOG_VERBOSE, "- Unknown GUID = %08X-%04x-%04x-XXXX\n",
853
-+                (unsigned)g->Data1, g->Data2, g->Data3);
854
-+        }
855
-+    }
856
-+    /* Try all supported mode by our priority */
857
-+    for (i = 0; dxva2_modes[i].name; i++) {
858
-+        const dxva2_mode_t *mode = &dxva2_modes[i];
859
-+        if (!mode->codec || mode->codec != va->codec_id)
860
-+            continue;
861
-+
862
-+        /* */
863
-+        is_suported = FALSE;
864
-+        for (count = 0; !is_suported && count < input_count; count++) {
865
-+            const GUID *g = &input_list[count];
866
-+            is_suported = IsEqualGUID(mode->guid, g) == 0;
867
-+        }
868
-+        if (!is_suported)
869
-+            continue;
870
-+        av_log(&dxva2wrapper, AV_LOG_VERBOSE, "Trying to use '%s' as input\n", mode->name);
871
-+        output_count = 0;
872
-+        output_list = NULL;
873
-+        if (FAILED(IDirectXVideoDecoderService_GetDecoderRenderTargets(va->vs, mode->guid, &output_count, &output_list))) {
874
-+                av_log(&dxva2wrapper, AV_LOG_VERBOSE, "IDirectXVideoDecoderService_GetDecoderRenderTargets failed,try others\n");
875
-+                continue;
876
-+        }
877
-+        for (j = 0; j < output_count; j++) {
878
-+            const D3DFORMAT f = output_list[j];
879
-+            const d3d_format_t *format = d3d_find_format(f);
880
-+            if (format) {
881
-+                av_log(&dxva2wrapper, AV_LOG_VERBOSE, "%s is supported for output\n", format->name);
882
-+            } else {
883
-+                av_log(&dxva2wrapper, AV_LOG_VERBOSE, "%d is supported for output (%4.4s)\n", f, (const char*)&f);
884
-+            }
885
-+        }
886
-+
887
-+        /* */
888
-+        for (j = 0; d3d_formats[j].name; j++){
889
-+            const d3d_format_t *format = &d3d_formats[j];
890
-+            is_suported = FALSE;
891
-+            for (k = 0; !is_suported && k < output_count; k++) {
892
-+                is_suported = format->format == output_list[k];
893
-+            }
894
-+            if (!is_suported)
895
-+                continue;
896
-+
897
-+            /* We have our solution */
898
-+            av_log(&dxva2wrapper, AV_LOG_VERBOSE, "Using '%s' to decode to '%s'\n", mode->name, format->name);
899
-+            *input  = *mode->guid;
900
-+            *output = format->format;
901
-+            return 0;
902
-+        }
903
-+    }
904
-+    return AVERROR_EXTERNAL;
905
-+}
906
-+
907
-+/**
908
-+* It creates a DirectX video service
909
-+*/
910
-+
911
-+static int dx_create_video_service(dxva2_context *va)
912
-+{
913
-+    typedef HRESULT (WINAPI *CreateVideoService_func)(IDirect3DDevice9 *,
914
-+        REFIID riid,
915
-+        void **ppService);
916
-+    CreateVideoService_func create_video_service =
917
-+        (CreateVideoService_func)GetProcAddress(va->hdxva2_dll,
918
-+        TEXT("DXVA2CreateVideoService"));
919
-+
920
-+    HRESULT hr;
921
-+    HANDLE device;
922
-+    IDirectXVideoDecoderService *vs;
923
-+
924
-+    if (!create_video_service) {
925
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "cannot load function\n");
926
-+        return AVERROR_EXTERNAL;
927
-+    }
928
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "DXVA2CreateVideoService Success!\n");
929
-+    hr = IDirect3DDeviceManager9_OpenDeviceHandle(va->devmng, &device);
930
-+    if (FAILED(hr)) {
931
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "OpenDeviceHandle failed\n");
932
-+        return AVERROR_EXTERNAL;
933
-+    }
934
-+    va->device = device;
935
-+    hr = IDirect3DDeviceManager9_GetVideoService(va->devmng, device, &IID_IDirectXVideoDecoderService, (void **)(&vs));
936
-+    if (FAILED(hr)) {
937
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "GetVideoService failed\n");
938
-+        return AVERROR_EXTERNAL;
939
-+    }
940
-+    va->vs = vs;
941
-+    return 0;
942
-+}
943
-+
944
-+/**
945
-+* It creates a Direct3D device manager
946
-+*/
947
-+
948
-+static int d3d_create_device_manager(dxva2_context *va)
949
-+{
950
-+    typedef HRESULT (WINAPI *CreateDeviceManager9_func)(UINT *pResetToken, IDirect3DDeviceManager9 **);
951
-+    CreateDeviceManager9_func create_device_manager9 =
952
-+        (CreateDeviceManager9_func)GetProcAddress(va->hdxva2_dll, TEXT("DXVA2CreateDirect3DDeviceManager9"));
953
-+    UINT token;
954
-+    HRESULT hr;
955
-+    IDirect3DDeviceManager9 *devmng;
956
-+    if (!create_device_manager9) {
957
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "cannot load function\n");
958
-+        return AVERROR_EXTERNAL;
959
-+    }
960
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "OurDirect3DCreateDeviceManager9 Success!\n");
961
-+    if (FAILED(create_device_manager9(&token, &devmng))) {
962
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, " OurDirect3DCreateDeviceManager9 failed\n");
963
-+        return AVERROR_EXTERNAL;
964
-+    }
965
-+
966
-+    hr = IDirect3DDeviceManager9_ResetDevice(devmng, va->d3ddev, token);
967
-+    if (FAILED(hr)) {
968
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirect3DDeviceManager9_ResetDevice failed: %08x", (unsigned)hr);
969
-+        return AVERROR_EXTERNAL;
970
-+    }
971
-+
972
-+    IDirect3DDeviceManager9_AddRef(devmng);
973
-+    va->token  = token;
974
-+    va->devmng = devmng;
975
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "obtained IDirect3DDeviceManager9\n");
976
-+    return 0;
977
-+}
978
-+
979
-+int ff_create_dxva2(int codec_id, dxva2_context *dxva2_ctx)
980
-+{
981
-+    if (!dxva2_ctx)
982
-+        return -1;
983
-+
984
-+    dxva2_ctx->codec_id = codec_id;
985
-+    /* Load dll*/
986
-+    dxva2_ctx->hd3d9_dll = LoadLibrary(TEXT("D3D9.DLL"));
987
-+    if (!dxva2_ctx->hd3d9_dll) {
988
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "cannot load d3d9.dll\n");
989
-+        goto error;
990
-+    }
991
-+    dxva2_ctx->hdxva2_dll = LoadLibrary(TEXT("DXVA2.DLL"));
992
-+    if (!dxva2_ctx->hdxva2_dll) {
993
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "cannot load dxva2.dll\n");
994
-+        goto error;
995
-+    }
996
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "DLLs loaded\n");
997
-+
998
-+    /* */
999
-+    if (d3d_create_device(dxva2_ctx)) {
1000
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "Failed to create Direct3D device\n");
1001
-+        goto error;
1002
-+    }
1003
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "d3d_create_device succeed\n");
1004
-+
1005
-+    if (d3d_create_device_manager(dxva2_ctx)) {
1006
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "d3d_create_device_manager failed\n");
1007
-+        goto error;
1008
-+    }
1009
-+
1010
-+    if (dx_create_video_service(dxva2_ctx)) {
1011
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "dx_create_video_service failed\n");
1012
-+        goto error;
1013
-+    }
1014
-+
1015
-+    /* */
1016
-+    if (dx_find_video_service_conversion(dxva2_ctx, &dxva2_ctx->input, &dxva2_ctx->render)) {
1017
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "dx_find_video_service_conversion failed\n");
1018
-+        goto error;
1019
-+    }
1020
-+    return 0;
1021
-+    /* TODO print the hardware name/vendor for debugging purposes */
1022
-+error:
1023
-+    close(dxva2_ctx);
1024
-+    return AVERROR_EXTERNAL;
1025
-+}
1026
-+
1027
-+/**
1028
-+* It creates a DXVA2 decoder using the given video format
1029
-+*/
1030
-+
1031
-+static int dx_create_video_decoder(dxva2_context *va, int codec_id,
1032
-+                                            const struct video_format_t *fmt)
1033
-+{
1034
-+    LPDIRECT3DSURFACE9 surface_list[VA_DXVA2_MAX_SURFACE_COUNT];
1035
-+    DXVA2_VideoDesc dsc;
1036
-+    DXVA2_ExtendedFormat *ext;
1037
-+    UINT                      cfg_count = 0;
1038
-+    DXVA2_ConfigPictureDecode *cfg_list = NULL;
1039
-+    IDirectXVideoDecoder *decoder;
1040
-+    int cfg_score, score, i;
1041
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "dx_create_video_decoder id %d %dx%d\n",
1042
-+           codec_id, fmt->i_width, fmt->i_height);
1043
-+
1044
-+    va->width  = fmt->i_width;
1045
-+    va->height = fmt->i_height;
1046
-+
1047
-+    /* Allocates all surfaces needed for the decoder */
1048
-+
1049
-+    va->surface_width  = (fmt->i_width  + 255) & ~255;
1050
-+    va->surface_height = (fmt->i_height + 255) & ~255;
1051
-+
1052
-+    switch (codec_id) {
1053
-+    case AV_CODEC_ID_H264:
1054
-+        va->surface_count = 16 + 1;
1055
-+        break;
1056
-+    default:
1057
-+        va->surface_count = 4 + 1;
1058
-+        break;
1059
-+    }
1060
-+    if (FAILED(IDirectXVideoDecoderService_CreateSurface(va->vs,
1061
-+                                                          va->surface_width,
1062
-+                                                          va->surface_height,
1063
-+                                                          va->surface_count - 1,
1064
-+                                                          va->render,
1065
-+                                                          D3DPOOL_DEFAULT,
1066
-+                                                          0,
1067
-+                                                          DXVA2_VideoDecoderRenderTarget,
1068
-+                                                          surface_list, NULL ))) {
1069
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirectXVideoAccelerationService_CreateSurface failed\n");
1070
-+        va->surface_count = 0;
1071
-+        return AVERROR_EXTERNAL;
1072
-+    }
1073
-+    for (i = 0; i < va->surface_count; i++) {
1074
-+        ff_va_surface_t *surface = &va->surface[i];
1075
-+        surface->d3d = surface_list[i];
1076
-+        surface->refcount = 0;
1077
-+        surface->order = 0;
1078
-+    }
1079
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "IDirectXVideoAccelerationService_CreateSurface succeed with %d surfaces (%dx%d)\n",
1080
-+           va->surface_count, fmt->i_width, fmt->i_height);
1081
-+    ZeroMemory(&dsc, sizeof(dsc));
1082
-+    dsc.SampleWidth  = fmt->i_width;
1083
-+    dsc.SampleHeight = fmt->i_height;
1084
-+    dsc.Format       = va->render;
1085
-+    if (fmt->i_frame_rate > 0 && fmt->i_frame_rate_base > 0) {
1086
-+        dsc.InputSampleFreq.Numerator   = fmt->i_frame_rate;
1087
-+        dsc.InputSampleFreq.Denominator = fmt->i_frame_rate_base;
1088
-+    } else {
1089
-+        dsc.InputSampleFreq.Numerator   = 0;
1090
-+        dsc.InputSampleFreq.Denominator = 0;
1091
-+    }
1092
-+    dsc.OutputFrameFreq = dsc.InputSampleFreq;
1093
-+    dsc.UABProtectionLevel = FALSE;
1094
-+    dsc.Reserved = 0;
1095
-+
1096
-+    ext = &dsc.SampleFormat;
1097
-+    ext->SampleFormat = 0;//DXVA2_SampleUnknown;
1098
-+    ext->VideoChromaSubsampling = 0;//DXVA2_VideoChromaSubsampling_Unknown;
1099
-+    ext->NominalRange = 0;//DXVA2_NominalRange_Unknown;
1100
-+    ext->VideoTransferMatrix = 0;//DXVA2_VideoTransferMatrix_Unknown;
1101
-+    ext->VideoLighting = 0;//DXVA2_VideoLighting_Unknown;
1102
-+    ext->VideoPrimaries = 0;//DXVA2_VideoPrimaries_Unknown;
1103
-+    ext->VideoTransferFunction = 0;//DXVA2_VideoTransFunc_Unknown;
1104
-+
1105
-+    /* List all configurations available for the decoder */
1106
-+
1107
-+    if (FAILED(IDirectXVideoDecoderService_GetDecoderConfigurations( va->vs, &va->input, &dsc, NULL, &cfg_count, &cfg_list ))) {
1108
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirectXVideoDecoderService_GetDecoderConfigurations failed\n");
1109
-+        return AVERROR_EXTERNAL;
1110
-+    }
1111
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "we got %d decoder configurations\n", cfg_count);
1112
-+
1113
-+    /* Select the best decoder configuration */
1114
-+    cfg_score = 0;
1115
-+    for (i = 0; i < cfg_count; i++) {
1116
-+        const DXVA2_ConfigPictureDecode *cfg = &cfg_list[i];
1117
-+
1118
-+        /* */
1119
-+        av_log(&dxva2wrapper, AV_LOG_VERBOSE, "configuration[%d] ConfigBitstreamRaw %d\n",
1120
-+               i, cfg->ConfigBitstreamRaw);
1121
-+        if (cfg->ConfigBitstreamRaw == 1)
1122
-+            score = 1;
1123
-+        else if (codec_id == AV_CODEC_ID_H264 && cfg->ConfigBitstreamRaw == 2)
1124
-+            score = 2;
1125
-+        else
1126
-+            continue;
1127
-+        if (IsEqualGUID(&cfg->guidConfigBitstreamEncryption, &DXVA_NoEncrypt))
1128
-+            score += 16;
1129
-+        if (cfg_score < score) {
1130
-+            va->cfg = *cfg;
1131
-+            cfg_score = score;
1132
-+        }
1133
-+    }
1134
-+    if (cfg_score <= 0) {
1135
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "Failed to find a supported decoder configuration\n");
1136
-+        return AVERROR_EXTERNAL;
1137
-+    }
1138
-+    if (FAILED(IDirectXVideoDecoderService_CreateVideoDecoder(va->vs, &va->input, &dsc, &va->cfg, surface_list, va->surface_count, &decoder))) {
1139
-+            av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirectXVideoDecoderService_CreateVideoDecoder failed\n");
1140
-+            return AVERROR_EXTERNAL;
1141
-+    }
1142
-+    va->decoder = decoder;
1143
-+    av_log(&dxva2wrapper, AV_LOG_VERBOSE, "IDirectXVideoDecoderService_CreateVideoDecoder succeed\n");
1144
-+    return 0;
1145
-+}
1146
-+
1147
-+static void dx_create_video_conversion(dxva2_context *va)
1148
-+{
1149
-+    switch (va->render) {
1150
-+    case MAKEFOURCC('N','V','1','2'):
1151
-+        va->output = (D3DFORMAT)MAKEFOURCC('Y','V','1','2');
1152
-+        break;
1153
-+    default:
1154
-+        va->output = va->render;
1155
-+        break;
1156
-+    }
1157
-+}
1158
-+
1159
-+int ff_setup_dxva2(dxva2_context *dxva2_ctx, void **hw,
1160
-+                         enum PixelFormat *chroma, int width, int height)
1161
-+{
1162
-+    struct video_format_t fmt;
1163
-+    const d3d_format_t *output;
1164
-+    int i, ret = 0;
1165
-+    if (dxva2_ctx->width == width && dxva2_ctx->height == height && dxva2_ctx->decoder)
1166
-+        goto ok;
1167
-+    dx_destroy_video_service(dxva2_ctx);
1168
-+    *chroma = AV_PIX_FMT_NONE;
1169
-+    if (width <= 0 || height <= 0)
1170
-+        return AVERROR(EINVAL);
1171
-+    memset(&fmt, 0, sizeof(fmt));
1172
-+    fmt.i_width = width;
1173
-+    fmt.i_height = height;
1174
-+    ret = dx_create_video_decoder(dxva2_ctx, dxva2_ctx->codec_id, &fmt);
1175
-+    if (ret < 0)
1176
-+        return ret;
1177
-+
1178
-+    dxva2_ctx->hw.decoder = dxva2_ctx->decoder;
1179
-+    dxva2_ctx->hw.cfg = &dxva2_ctx->cfg;
1180
-+    dxva2_ctx->hw.surface_count = dxva2_ctx->surface_count;
1181
-+    dxva2_ctx->hw.surface = dxva2_ctx->hw_surface;
1182
-+    for (i = 0; i < dxva2_ctx->surface_count; i++)
1183
-+        dxva2_ctx->hw.surface[i] = dxva2_ctx->surface[i].d3d;
1184
-+    dx_create_video_conversion(dxva2_ctx);
1185
-+ok:
1186
-+    *hw = &dxva2_ctx->hw;
1187
-+    output = d3d_find_format(dxva2_ctx->output);
1188
-+    *chroma = output->codec;
1189
-+    return 0;
1190
-+}
1191
-+
1192
-+void ff_get_dxva2_surface(dxva2_context *external, AVFrame *ff)
1193
-+{
1194
-+    dxva2_context *va = external;
1195
-+    unsigned int i, old;
1196
-+    ff_va_surface_t *surface;
1197
-+    for (i = 0, old = 0; i < va->surface_count; i++) {
1198
-+        ff_va_surface_t *surface = &va->surface[i];
1199
-+        if (!surface->refcount)
1200
-+            break;
1201
-+        if (surface->order < va->surface[old].order)
1202
-+            old = i;
1203
-+    }
1204
-+    if (i >= va->surface_count)
1205
-+        i = old;
1206
-+    surface = &va->surface[i];
1207
-+    surface->refcount = 1;
1208
-+    surface->order = va->surface_order++;
1209
-+    ff->data[3] = (uint8_t *)surface->d3d;
1210
-+    return;
1211
-+}
1212
-+
1213
-+void ff_release_dxva2_surface(dxva2_context *external, AVFrame *ff)
1214
-+{
1215
-+    dxva2_context *va = external;
1216
-+    LPDIRECT3DSURFACE9 d3d = (LPDIRECT3DSURFACE9)(uintptr_t)ff->data[3];
1217
-+    if (NULL == d3d)
1218
-+        return;
1219
-+    for (unsigned i = 0; i < va->surface_count; i++) {
1220
-+            if (va->surface[i].d3d == d3d)
1221
-+                va->surface[i].refcount--;
1222
-+    }
1223
-+}
1224
-+
1225
-+static void ff_copy_from_nv12(uint8_t *src[2], size_t src_pitch[2],
1226
-+                                     unsigned width, unsigned height, AVFrame *ff )
1227
-+{
1228
-+    unsigned int i, j;
1229
-+    uint8_t *dst_u, *dst_v;
1230
-+    unsigned int heitht_uv, width_uv;
1231
-+    dst_u = ff->data[1];
1232
-+    dst_v = ff->data[2];
1233
-+    heitht_uv = height/2;
1234
-+    width_uv = width/2;
1235
-+    for (i = 0; i < height; i++) {
1236
-+         memcpy( ff->data[0] + i * ff->linesize[0], src[0]+i*src_pitch[0], width );
1237
-+    }
1238
-+    for (i = 0; i < heitht_uv; i++) {
1239
-+        for (j = 0; j<width_uv; j++) {
1240
-+            dst_u[i*ff->linesize[1]+j] = *(src[1]+i*src_pitch[1]+2*j);
1241
-+            dst_v[i*ff->linesize[2]+j] = *(src[1]+i*src_pitch[1]+2*j+1);
1242
-+        }
1243
-+    }
1244
-+}
1245
-+
1246
-+int ff_extract_dxva2(dxva2_context *dxva2,AVFrame *frame)
1247
-+{
1248
-+    LPDIRECT3DSURFACE9 d3d;
1249
-+    D3DLOCKED_RECT lock;
1250
-+    d3d = (LPDIRECT3DSURFACE9)(uintptr_t)frame->data[3];
1251
-+    if (FAILED(IDirect3DSurface9_LockRect(d3d, &lock, NULL,D3DLOCK_READONLY))) {
1252
-+        av_log(&dxva2wrapper, AV_LOG_ERROR, "IDirect3DSurface9_LockRect Error\n");
1253
-+        return AVERROR_EXTERNAL;
1254
-+    }
1255
-+    if (dxva2->render == MAKEFOURCC( 'N', 'V', '1', '2' )) {
1256
-+        uint8_t *plane[2] = {
1257
-+            (uint8_t *)lock.pBits,
1258
-+            (uint8_t *)lock.pBits + lock.Pitch * dxva2->surface_height
1259
-+        };
1260
-+        size_t pitch[2] = {
1261
-+            lock.Pitch,
1262
-+            lock.Pitch,
1263
-+        };
1264
-+        ff_copy_from_nv12(plane, pitch, dxva2->width, dxva2->height, frame);
1265
-+    }
1266
-+    IDirect3DSurface9_UnlockRect( d3d );
1267
-+    return 0;
1268
-+}
1269
-+
1270
-+void ff_release_dxva2(dxva2_context *dxva2_ctx)
1271
-+{
1272
-+    if (dxva2_ctx)
1273
-+        close(dxva2_ctx);
1274
-+}
1275
-diff --git a/libavcodec/dxva2_wrapper.h b/libavcodec/dxva2_wrapper.h
1276
-new file mode 100644
1277
-index 0000000..96560bf
1278
---- /dev/null
1279
-+++ b/libavcodec/dxva2_wrapper.h
1280
-@@ -0,0 +1,389 @@
1281
-+/*
1282
-+ * Call hardware decode acceleration through dxva2 API
1283
-+
1284
-+ * Copyright (C) 2009 Geoffroy Couprie
1285
-+ * Copyright (C) 2009 Laurent Aimar
1286
-+ * $Id: 0af77c6633657d4a700a3f60e5ff7c417086822f $
1287
-+ *
1288
-+ * Authors: Geoffroy Couprie <geal@videolan.org>
1289
-+ *          Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
1290
-+ * Modified by Wei Gao <weigao@multicorewareinc.com>
1291
-+ *
1292
-+ * Attribute from VLC
1293
-+ *
1294
-+ * This file is part of FFmpeg.
1295
-+ *
1296
-+ * FFmpeg is free software; you can redistribute it and/or
1297
-+ * modify it under the terms of the GNU Lesser General Public
1298
-+ * License as published by the Free Software Foundation; either
1299
-+ * version 2.1 of the License, or (at your option) any later version.
1300
-+ *
1301
-+ * FFmpeg is distributed in the hope that it will be useful,
1302
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1303
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1304
-+ * Lesser General Public License for more details.
1305
-+ *
1306
-+ * You should have received a copy of the GNU Lesser General Public
1307
-+ * License along with FFmpeg; if not, write to the Free Software
1308
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1309
-+ */
1310
-+
1311
-+#ifndef DXVA2_WRAPPER_H
1312
-+#define DXVA2_WRAPPER_H
1313
-+
1314
-+#define COBJMACROS
1315
-+#pragma once
1316
-+
1317
-+#include <windows.h>
1318
-+#include <d3d9.h>
1319
-+#include "avcodec.h"
1320
-+#include "dxva2.h"
1321
-+
1322
-+#ifndef false
1323
-+#define false FALSE
1324
-+#endif
1325
-+
1326
-+#define VA_DXVA2_MAX_SURFACE_COUNT (64)
1327
-+typedef struct {
1328
-+    /**
1329
-+     * D3D surface, used for decode.
1330
-+     *
1331
-+     * encoding: unused
1332
-+     * decoding: Set by user.
1333
-+     */
1334
-+    LPDIRECT3DSURFACE9 d3d;
1335
-+
1336
-+    /**
1337
-+     * D3D surface reference, if it is 1 means that the surface is being used.0 means the surface is free.
1338
-+     *
1339
-+     * encoding: unused
1340
-+     * decoding: Set by user.
1341
-+     */
1342
-+    int                refcount;
1343
-+
1344
-+    /**
1345
-+     * D3D surface order.
1346
-+     *
1347
-+     * encoding: unused
1348
-+     * decoding: Set by user.
1349
-+     */
1350
-+    unsigned int       order;
1351
-+} ff_va_surface_t;
1352
-+
1353
-+typedef struct{
1354
-+    /**
1355
-+     * Codec ID of Video.
1356
-+     *
1357
-+     * encoding: unused
1358
-+     * decoding: Set by user.
1359
-+     */
1360
-+    int                          codec_id;
1361
-+
1362
-+    /**
1363
-+     * Video width.
1364
-+     *
1365
-+     * encoding: unused
1366
-+     * decoding: Set by user.
1367
-+     */
1368
-+    int                          width;
1369
-+
1370
-+    /**
1371
-+     * Video height.
1372
-+     *
1373
-+     * encoding: unused
1374
-+     * decoding: Set by user.
1375
-+     */
1376
-+    int                         height;
1377
-+
1378
-+    /**
1379
-+     * Video D3D9 DLL handle.
1380
-+     *
1381
-+     * encoding: unused
1382
-+     * decoding: Set by user.
1383
-+     */
1384
-+    HINSTANCE                   hd3d9_dll;
1385
-+
1386
-+    /**
1387
-+     * Video DXVA2 DLL handle.
1388
-+     *
1389
-+     * encoding: unused
1390
-+     * decoding: Set by user.
1391
-+     */
1392
-+    HINSTANCE                   hdxva2_dll;
1393
-+
1394
-+    /**
1395
-+     * IDirect3D9 pointer.
1396
-+     *
1397
-+     * encoding: unused
1398
-+     * decoding: Set by user.
1399
-+     */
1400
-+    LPDIRECT3D9                  d3dobj;
1401
-+
1402
-+    /**
1403
-+     * IDirect3D9 pointer.
1404
-+     *
1405
-+     * encoding: unused
1406
-+     * decoding: Set by user.
1407
-+     */
1408
-+    LPDIRECT3DDEVICE9            d3ddev;
1409
-+
1410
-+    /**
1411
-+     * IDirect3D9 present parameters.
1412
-+     *
1413
-+     * encoding: unused
1414
-+     * decoding: Set by user.
1415
-+     */
1416
-+    D3DPRESENT_PARAMETERS        d3dpp;
1417
-+
1418
-+     /**
1419
-+     * IDirect3D9 adapter identifier.
1420
-+     *
1421
-+     * encoding: unused
1422
-+     * decoding: Set by user.
1423
-+     */
1424
-+    D3DADAPTER_IDENTIFIER9       d3dai;
1425
-+
1426
-+    /**
1427
-+     *  D3D reset token,use it to reset device.
1428
-+     *
1429
-+     * encoding: unused
1430
-+     * decoding: Set by user.
1431
-+     */
1432
-+    UINT                         token;
1433
-+
1434
-+    /**
1435
-+     *  A pointer to the IDirect3DDeviceManager9 interface.
1436
-+     *
1437
-+     * encoding: unused
1438
-+     * decoding: Set by user.
1439
-+     */
1440
-+    IDirect3DDeviceManager9      *devmng;
1441
-+
1442
-+    /**
1443
-+     *  A handle to a Direct3D device.
1444
-+     *
1445
-+     * encoding: unused
1446
-+     * decoding: Set by user.
1447
-+     */
1448
-+    HANDLE                       device;
1449
-+
1450
-+    /**
1451
-+     *  A pointer to the requested interface.
1452
-+     *
1453
-+     * encoding: unused
1454
-+     * decoding: Set by user.
1455
-+     */
1456
-+    IDirectXVideoDecoderService  *vs;
1457
-+
1458
-+    /**
1459
-+     * The  GUID of dxva2_modes.
1460
-+     *
1461
-+     * encoding: unused
1462
-+     * decoding: Set by user.
1463
-+     */
1464
-+    GUID                         input;
1465
-+
1466
-+    /**
1467
-+     *  The color format of D3D.
1468
-+     *
1469
-+     * encoding: unused
1470
-+     * decoding: Set by user.
1471
-+     */
1472
-+    D3DFORMAT                    render;
1473
-+
1474
-+    /**
1475
-+     *  The describes the configuration of a DXVA decoder device.
1476
-+     *
1477
-+     * encoding: unused
1478
-+     * decoding: Set by user.
1479
-+     */
1480
-+    DXVA2_ConfigPictureDecode    cfg;
1481
-+
1482
-+    /**
1483
-+     *  The DXVA2 decoder object.
1484
-+     *
1485
-+     * encoding: unused
1486
-+     * decoding: Set by user.
1487
-+     */
1488
-+    IDirectXVideoDecoder         *decoder;
1489
-+
1490
-+    /**
1491
-+     *  The color format of D3D.
1492
-+     *
1493
-+     * encoding: unused
1494
-+     * decoding: Set by user.
1495
-+     */
1496
-+    D3DFORMAT                    output;
1497
-+
1498
-+    /**
1499
-+     *  DXVA2 hwaccel context.
1500
-+     *
1501
-+     * encoding: unused
1502
-+     * decoding: Set by user.
1503
-+     */
1504
-+    struct dxva_context          hw;
1505
-+
1506
-+    /**
1507
-+     *  DXVA2 decode surfaces number.
1508
-+     *
1509
-+     * encoding: unused
1510
-+     * decoding: Set by user.
1511
-+     */
1512
-+    unsigned int                 surface_count;
1513
-+
1514
-+    /**
1515
-+     *  DXVA2 decode surfaces order, used for get surface.
1516
-+     *
1517
-+     * encoding: unused
1518
-+     * decoding: Set by user.
1519
-+     */
1520
-+    unsigned int                 surface_order;
1521
-+
1522
-+    /**
1523
-+     *  DXVA2 width of decode surfaces.
1524
-+     *
1525
-+     * encoding: unused
1526
-+     * decoding: Set by user.
1527
-+     */
1528
-+    int                          surface_width;
1529
-+
1530
-+    /**
1531
-+     *  DXVA2 heigt of decode surfaces.
1532
-+     *
1533
-+     * encoding: unused
1534
-+     * decoding: Set by user.
1535
-+     */
1536
-+    int                          surface_height;
1537
-+
1538
-+    /**
1539
-+     * Decode Surfaces used for decode.
1540
-+     *
1541
-+     * encoding: unused
1542
-+     * decoding: Set by user.
1543
-+     */
1544
-+    ff_va_surface_t              surface[VA_DXVA2_MAX_SURFACE_COUNT];
1545
-+
1546
-+    /**
1547
-+     * Decode Surfaces used for decode.
1548
-+     *
1549
-+     * encoding: unused
1550
-+     * decoding: Set by user.
1551
-+     */
1552
-+    LPDIRECT3DSURFACE9           hw_surface[VA_DXVA2_MAX_SURFACE_COUNT];
1553
-+} dxva2_context;
1554
-+
1555
-+typedef struct {
1556
-+    /**
1557
-+     * The d3d format name.
1558
-+     *
1559
-+     * encoding: unused
1560
-+     * decoding: Set by user.
1561
-+     */
1562
-+    const char        *name;
1563
-+
1564
-+    /**
1565
-+     *  The color format of D3D.
1566
-+     *
1567
-+     * encoding: unused
1568
-+     * decoding: Set by user.
1569
-+     */
1570
-+    D3DFORMAT         format;
1571
-+
1572
-+    /**
1573
-+     *  The codec pixel format.
1574
-+     *
1575
-+     * encoding: unused
1576
-+     * decoding: Set by user.
1577
-+     */
1578
-+    enum PixelFormat  codec;
1579
-+} d3d_format_t;
1580
-+
1581
-+/**
1582
-+ * video format description
1583
-+ */
1584
-+struct video_format_t
1585
-+{
1586
-+    /**
1587
-+     *  picture chroma.
1588
-+     *
1589
-+     * encoding: unused
1590
-+     * decoding: Set by user.
1591
-+     */
1592
-+    enum PixelFormat  i_chroma;
1593
-+
1594
-+    /**
1595
-+     *  picture width.
1596
-+     *
1597
-+     * encoding: unused
1598
-+     * decoding: Set by user.
1599
-+     */
1600
-+    unsigned int      i_width;
1601
-+
1602
-+    /**
1603
-+     *  picture height.
1604
-+     *
1605
-+     * encoding: unused
1606
-+     * decoding: Set by user.
1607
-+     */
1608
-+    unsigned int      i_height;
1609
-+    /**
1610
-+     *  frame rate numerator.
1611
-+     *
1612
-+     * encoding: unused
1613
-+     * decoding: Set by user.
1614
-+     */
1615
-+    unsigned int      i_frame_rate;
1616
-+
1617
-+    /**
1618
-+     *  frame rate denominator.
1619
-+     *
1620
-+     * encoding: unused
1621
-+     * decoding: Set by user.
1622
-+     */
1623
-+    unsigned int      i_frame_rate_base;
1624
-+};
1625
-+
1626
-+typedef struct {
1627
-+    /**
1628
-+     *  DXVA2 decode mode name.
1629
-+     *
1630
-+     * encoding: unused
1631
-+     * decoding: Set by user.
1632
-+     */
1633
-+    const char   *name;
1634
-+
1635
-+    /**
1636
-+     * The  GUID of dxva2_modes.
1637
-+     *
1638
-+     * encoding: unused
1639
-+     * decoding: Set by user.
1640
-+     */
1641
-+    const GUID   *guid;
1642
-+    /**
1643
-+     * The  codec id of ffmpeg.
1644
-+     *
1645
-+     * encoding: unused
1646
-+     * decoding: Set by user.
1647
-+     */
1648
-+    int          codec;
1649
-+} dxva2_mode_t;
1650
-+
1651
-+/** Create the DXVA2 Object. */
1652
-+int ff_create_dxva2(int codec_id,dxva2_context *dxva2_ctx);
1653
-+
1654
-+/** Initial DXVA2 Object. */
1655
-+int ff_setup_dxva2(dxva2_context *external, void **hw, enum PixelFormat *chroma,int width, int height);
1656
-+
1657
-+/** Convert NV12 video to yuv video and save it into AVFrame*/
1658
-+int ff_extract_dxva2( dxva2_context *dxva2,AVFrame *frame);
1659
-+
1660
-+/** Release DXVA2 object*/
1661
-+void ff_release_dxva2(dxva2_context *dxva2_ctx);
1662
-+
1663
-+/** Get DXVA2 decode surface*/
1664
-+void ff_get_dxva2_surface(dxva2_context *external, AVFrame *ff);
1665
-+
1666
-+/** Release DXVA2 decode surface*/
1667
-+void ff_release_dxva2_surface(dxva2_context *external, AVFrame *ff);
1668
-+
1669
-+#endif/* AVCODEC_DXVA2_WRAPPER_H */
1670
-diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h
1671
-index b4ebd23..91ece2c 100644
1672
---- a/libavcodec/mpeg12.h
1673
-+++ b/libavcodec/mpeg12.h
1674
-@@ -24,6 +24,8 @@
1675
- 
1676
- #include "mpegvideo.h"
1677
- 
1678
-+#include "libavutil/stereo3d.h"
1679
-+
1680
- #define DC_VLC_BITS 9
1681
- #define MV_VLC_BITS 9
1682
- #define TEX_VLC_BITS 9
1683
-@@ -43,6 +45,27 @@ extern VLC ff_mv_vlc;
1684
- 
1685
- extern uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3];
1686
- 
1687
-+typedef struct Mpeg1Context {
1688
-+    MpegEncContext mpeg_enc_ctx;
1689
-+    int mpeg_enc_ctx_allocated; /* true if decoding context allocated */
1690
-+    int repeat_field;           /* true if we must repeat the field */
1691
-+    AVPanScan pan_scan;         /* some temporary storage for the panscan */
1692
-+    AVStereo3D stereo3d;
1693
-+    int has_stereo3d;
1694
-+    uint8_t *a53_caption;
1695
-+    int a53_caption_size;
1696
-+    uint8_t afd;
1697
-+    int has_afd;
1698
-+    int slice_count;
1699
-+    int save_aspect_info;
1700
-+    int save_width, save_height, save_progressive_seq;
1701
-+    AVRational frame_rate_ext;  /* MPEG-2 specific framerate modificator */
1702
-+    int sync;                   /* Did we reach a sync point like a GOP/SEQ/KEYFrame? */
1703
-+    int tmpgexs;
1704
-+    int first_slice;
1705
-+    int extradata_decoded;
1706
-+} Mpeg1Context;
1707
-+
1708
- void ff_mpeg12_common_init(MpegEncContext *s);
1709
- void ff_mpeg12_init_vlcs(void);
1710
- 
1711
-diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
1712
-index 78888c7..ef9a971 100644
1713
---- a/libavcodec/mpeg12dec.c
1714
-+++ b/libavcodec/mpeg12dec.c
1715
-@@ -47,26 +47,6 @@
1716
- #include "vdpau_internal.h"
1717
- #include "xvmc_internal.h"
1718
- 
1719
--typedef struct Mpeg1Context {
1720
--    MpegEncContext mpeg_enc_ctx;
1721
--    int mpeg_enc_ctx_allocated; /* true if decoding context allocated */
1722
--    int repeat_field;           /* true if we must repeat the field */
1723
--    AVPanScan pan_scan;         /* some temporary storage for the panscan */
1724
--    AVStereo3D stereo3d;
1725
--    int has_stereo3d;
1726
--    uint8_t *a53_caption;
1727
--    int a53_caption_size;
1728
--    uint8_t afd;
1729
--    int has_afd;
1730
--    int slice_count;
1731
--    int save_aspect_info;
1732
--    int save_width, save_height, save_progressive_seq;
1733
--    AVRational frame_rate_ext;  /* MPEG-2 specific framerate modificator */
1734
--    int sync;                   /* Did we reach a sync point like a GOP/SEQ/KEYFrame? */
1735
--    int tmpgexs;
1736
--    int first_slice;
1737
--    int extradata_decoded;
1738
--} Mpeg1Context;
1739
- 
1740
- #define MB_TYPE_ZERO_MV   0x20000000
1741
- 
1742
--- 
1743
-1.8.1.2
1744
-
1745
sview-15_10.tar.gz/LICENSE Deleted
63
 
1
@@ -1,61 +0,0 @@
2
-StShared,
3
-StGLWidget:
4
------------
5
-
6
-sources of these libraries are under Boost license. Read the file "license-boost.txt" for details.
7
-Notice that some sources are wrappers over other 3rd-parties
8
-and their licenses should be taken into account when used.
9
-
10
-StCore,
11
-StOutAnaglyph,
12
-StOutDual,
13
-StOutInterlace,
14
-StOutIZ3D,
15
-StOutPageFlip:
16
---------------
17
-
18
-these libraries are under the GNU Lesser General Public License version 3.0 or later.
19
-Read the file "license-lgpl-3.0.txt" for details.
20
-
21
-StImageViewer,
22
-StMoviePlayer,
23
-StDiagnostics,
24
-StMonitorsDump,
25
-StBrowserPlugin,
26
-StTests:
27
---------
28
-
29
-these libraries and programs are under the GNU General Public License version 3.0 or later.
30
-Read the file "license-gpl-3.0.txt" for details.
31
-
32
-sView:
33
-------
34
-
35
-sView executable project is a dummy entry point to real applications like StImageViewer.
36
-Formally it was licensed under Boost license terms.
37
-
38
-StCADViewer:
39
-------------
40
-
41
-this program is under the GNU General Public License version 3.0 or later.
42
-
43
-External libraries:
44
--------------------
45
-
46
-FFmpeg libraries are distributed under GNU Lesser General Public License version 2.1 or later.
47
-http://ffmpeg.org/
48
-
49
-libconfig++ library distributed under GNU Lesser General Public License version 2.1 or later.
50
-http://www.hyperrealm.com/libconfig/
51
-
52
-OpenAL library distributed under GNU Lesser General Public License version 2.1 or later.
53
-http://kcat.strangesoft.net/openal.html
54
-
55
-FreeType library distributed under FreeType License (BSD-style license with a credit clause).
56
-http://www.freetype.org/
57
-
58
-Open CASCADE Technology libraries distributed under GNU Lesser General Public License version 2.1.
59
-http://dev.opencascade.org/
60
-
61
-Some 3rd-parties may depend on other libraries and provide more license options.
62
-Please read license information for original projects.
63
sview-15_10.tar.gz/README Deleted
26
 
1
@@ -1,24 +0,0 @@
2
-sView - stereoscopic media player
3
-=================================
4
-
5
-0) Updates
6
-----------
7
-
8
-* To get up-to-date sources please clone official git repository:
9
-  git clone https://github.com/gkv311/sview.git
10
-
11
-1) Documentation
12
-----------------
13
-
14
-* Read the documentation in the doc/ directory in git.
15
-  Online help is available on official site http://www.sview.ru/en/sview2009/usertips
16
-
17
-2) Licensing
18
-------------
19
-
20
-* See the LICENSE file.
21
-
22
-3) Build and Install
23
---------------------
24
-
25
-* See the docs/INSTALL file.
26
sview-15_10.tar.gz/docs/INSTALL Deleted
115
 
1
@@ -1,113 +0,0 @@
2
-I. Installing 3rd-parties
3
-=========================
4
-
5
-sView requires several 3rd-party components for building:
6
-- C/C++ compiler (g++, MSVC 2010+)
7
-- Code::Blocks (http://www.codeblocks.org)
8
-- FFmpeg (http://www.ffmpeg.org)
9
-- OpenAL soft (http://kcat.strangesoft.net/openal.html)
10
-- libwebp, optional (https://developers.google.com/speed/webp/download)
11
-- GTK2+, Linux only (http://www.gtk.org)
12
-- libconfig++, Linux and Android (http://www.hyperrealm.com/libconfig)
13
-- libxpm, Linux only
14
-
15
-On Debian/Ubuntu you might use the following command to install all dependencies at once:
16
-
17
-sudo apt-get install \
18
- g++ \
19
- libgtk2.0-dev \
20
- libopenal-dev \
21
- libgl1-mesa-dev \
22
- libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev \
23
- libwebp-dev \
24
- libconfig++-dev libconfig-dev \
25
- libxpm-dev \
26
- codeblocks
27
-
28
-The similar command for RPM-based distributives:
29
-
30
-yum install gcc gcc-c++ \
31
- gtk+-devel gtk2-devel \
32
- mesa-libGLU-devel glew-devel \
33
- openal-devel \
34
- libconfig-devel
35
-
36
-rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
37
-yum install ffmpeg-devel
38
-
39
-On Windows and Mac OS X please refer to official documentation for each project.
40
-Notice that DevIL and FreeImage libraries are optional and need not for building sView
41
-(libraries are loaded dynamically if available).
42
-
43
-II. Makefile on Linux
44
-=====================
45
-
46
-Current Makefile has been written only for DEB/RPM source packages
47
-and lacks configuration flexibility (means ther NO any ./configure and so on).
48
-
49
-All you need is to install dependencies and to execute traditional commands:
50
-
51
-  make && make install
52
-
53
-III. Code::Blocks
54
-=================
55
-
56
-Code::Blocks is an official way for building and development of sView.
57
-There are several building targets depending on platform
58
-(Mac OS X, Linux, Windows) and debugging possibilities:
59
-- WIN_vc_x86,        32-bit target using Visual Studio compiler
60
-- WIN_vc_x86_DEBUG,  32-bit target with debugging options
61
-- WIN_vc_AMD64,      64-bit target using Visual Studio compiler
62
-- LINUX_gcc,         Linux target, g++ compiler
63
-- LINUX_gcc_DEBUG,   Linux target with debugging options
64
-- MAC_gcc,           Mac OS X target, g++ compatible compiler
65
-- MAC_gcc_DEBUG,     Mac OS X target with debugging options
66
-
67
-Notice that the following compilers should be configured within Code::Blocks:
68
-- gcc,               configured to g++ or compatible compiler (on systems other than Windows)
69
-- msvc10,            configured to Visual Studio 2010+ compiler, PSDK and DXSDK
70
-- windows_sdk_x86_64 (copy of msvc10) configured to 64-bit libraries and compiler toolchain
71
-
72
-3rd-parties should be either configured as Code::Blocks global compiler options
73
-or placed into "3rdparty" folder.
74
-
75
-IV. Building options
76
-====================
77
-
78
-Several preprocessor directives control building options.
79
-Notice that by default "include/stconfig.conf" file is used to override these options
80
-(this file will be used only when ST_HAVE_STCONFIG is defined).
81
-
82
-- ST_HAVE_WEBP - should be defined to activate libwebp usage
83
-  (notice that since next releases of FFmpeg might have built-in support for webp/webpll image files)
84
-- ST_HAVE_MONGOOSE - should be defined to activate built-in web UI for remote Movie Player control
85
-- ST_HAVE_OCCT - should be defined to activate CAD files import in tiny CAD viewer
86
-- ST_DEBUG - should be defined to activate debugging log output
87
-- ST_DEBUG_LOG_TO_FILE - specifies file name or full path to duplicate debug log output
88
-
89
-V. Distribution scripts
90
-=======================
91
-
92
-Several script were written to automate distribution routines.
93
-All them were placed in "distribution" folder.
94
-
95
-- build.bat, batch script for Windows. Performs re-building of WIN_vc_x86 and WIN_vc_AMD64 targets
96
-  using Code::Blocks and pack result binaries using InnoSetup script.
97
-  Notice that all dependencies should be available (including InnoSetup),
98
-  and DLLs should be placed into bin/WIN_vc_x86 and bin/WIN_vc_AMD64 folders.
99
-- buildDebSrc.sh, bash script for Linux to pack sources into Debian source package.
100
-- buildMac.sh, bash script to pack binaries from bin/MAC_gcc folder into DMG image.
101
-  3rd-party libraries should be already located in "bin/MAC_gcc_DEBUG/sView.app/Contents/Frameworks/"
102
-  folder with correct search path (refer to bind_frameworks.sh auxiliary script).
103
-
104
-===
105
-
106
-su
107
-yum install rpm-build
108
-
109
-mkdir -p ${HOME}/workspace/redhat/{RPMS,SRPMS,SPECS,SOURCES,BUILD}
110
-echo "%_topdir ${HOME}/workspace/redhat" > ${HOME}/.rpmmacros
111
-
112
-wget https://launchpad.net/~sview/+archive/stable/+files/sview_12.05-1%7Eprecise.tar.gz
113
-mv sview_12.05-1~precise.tar.gz $HOME/workspace/redhat/SOURCES/sview_12.05-1.tar.gz
114
-rpmbuild -ba distribution/sView.rpm.spec
115
sview-15_10.tar.gz/textures/fullScreen128.png Deleted
sview-15_10.tar.gz/textures/fullScreen144.png Deleted
sview-15_10.tar.gz/textures/fullScreen16.png Deleted
sview-15_10.tar.gz/textures/fullScreen192.png Deleted
sview-15_10.tar.gz/textures/fullScreen24.png Deleted
sview-15_10.tar.gz/textures/fullScreen256.png Deleted
sview-15_10.tar.gz/textures/fullScreen32.png Deleted
sview-15_10.tar.gz/textures/fullScreen48.png Deleted
sview-15_10.tar.gz/textures/fullScreen64.png Deleted
sview-15_10.tar.gz/textures/fullScreen72.png Deleted
sview-15_10.tar.gz/textures/fullScreen96.png Deleted
sview-15_10.tar.gz/texturesSrc/fullscr.svg Deleted
93
 
1
@@ -1,91 +0,0 @@
2
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
4
-
5
-<svg
6
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
7
-   xmlns:cc="http://creativecommons.org/ns#"
8
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
9
-   xmlns:svg="http://www.w3.org/2000/svg"
10
-   xmlns="http://www.w3.org/2000/svg"
11
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
-   width="32"
14
-   height="32"
15
-   id="svg2"
16
-   version="1.1"
17
-   inkscape:version="0.48.2 r9819"
18
-   sodipodi:docname="fullscr.svg"
19
-   inkscape:export-filename="fullScreen32.png"
20
-   inkscape:export-xdpi="107.66355"
21
-   inkscape:export-ydpi="107.66355">
22
-  <defs
23
-     id="defs4" />
24
-  <sodipodi:namedview
25
-     id="base"
26
-     pagecolor="#ffffff"
27
-     bordercolor="#666666"
28
-     borderopacity="1.0"
29
-     inkscape:pageopacity="0.0"
30
-     inkscape:pageshadow="2"
31
-     inkscape:zoom="16.8125"
32
-     inkscape:cx="14.929368"
33
-     inkscape:cy="16"
34
-     inkscape:document-units="px"
35
-     inkscape:current-layer="layer1"
36
-     showgrid="false"
37
-     inkscape:window-width="1213"
38
-     inkscape:window-height="756"
39
-     inkscape:window-x="67"
40
-     inkscape:window-y="0"
41
-     inkscape:window-maximized="0" />
42
-  <metadata
43
-     id="metadata7">
44
-    <rdf:RDF>
45
-      <cc:Work
46
-         rdf:about="">
47
-        <dc:format>image/svg+xml</dc:format>
48
-        <dc:type
49
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
50
-        <dc:title></dc:title>
51
-      </cc:Work>
52
-    </rdf:RDF>
53
-  </metadata>
54
-  <g
55
-     inkscape:label="Layer 1"
56
-     inkscape:groupmode="layer"
57
-     id="layer1"
58
-     transform="translate(0,-1020.3622)">
59
-    <path
60
-       sodipodi:type="arc"
61
-       style="fill:#808080;fill-opacity:0.45814981;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
62
-       id="path2985"
63
-       sodipodi:cx="11.271376"
64
-       sodipodi:cy="13.769517"
65
-       sodipodi:rx="12.877323"
66
-       sodipodi:ry="12.877323"
67
-       d="m 24.148699,13.769517 a 12.877323,12.877323 0 1 1 -25.7546465,0 12.877323,12.877323 0 1 1 25.7546465,0 z"
68
-       transform="translate(4.6988847,1022.6818)" />
69
-    <path
70
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
71
-       d="m 8.386617,1035.2321 0.05948,-6.4238 6.245353,-0.06 z"
72
-       id="path3755"
73
-       inkscape:connector-curvature="0"
74
-       sodipodi:nodetypes="cccc" />
75
-    <path
76
-       sodipodi:type="arc"
77
-       style="fill:#000000;fill-opacity:1"
78
-       id="path3792"
79
-       sodipodi:cx="16.08922"
80
-       sodipodi:cy="16.684015"
81
-       sodipodi:rx="1.457249"
82
-       sodipodi:ry="1.457249"
83
-       d="m 17.546469,16.684015 a 1.457249,1.457249 0 1 1 -2.914498,0 1.457249,1.457249 0 1 1 2.914498,0 z"
84
-       transform="translate(-0.11895969,1019.7673)" />
85
-    <path
86
-       sodipodi:nodetypes="cccc"
87
-       inkscape:connector-curvature="0"
88
-       id="path3813"
89
-       d="m 23.434944,1037.4918 -0.05948,6.4238 -6.245353,0.06 z"
90
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
91
-  </g>
92
-</svg>
93
sview-15_11.tar.gz/3rdparty/FFmpeg/patches/patch_png_ster.patch Added
96
 
1
@@ -0,0 +1,94 @@
2
+From 104e5d8f212c46b9eedb932a6b6c717372ccdceb Mon Sep 17 00:00:00 2001
3
+From: Kirill Gavrilov <kirill@sview.ru>
4
+Date: Thu, 22 Oct 2015 23:36:52 +0300
5
+Subject: [PATCH 1/1] avcodec/png: read and write stereo3d frame side data
6
+ information
7
+
8
+Use optional sTER chunk defining side-by-side stereo pair
9
+within "Extensions to the PNG 1.2 Specification", version 1.3.0.
10
+---
11
+ libavcodec/pngdec.c | 16 ++++++++++++++++
12
+ libavcodec/pngenc.c | 19 +++++++++++++++++++
13
+ 2 files changed, 35 insertions(+)
14
+
15
+diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c
16
+index 4cfdc58..99111d4 100644
17
+--- a/libavcodec/pngdec.c
18
++++ b/libavcodec/pngdec.c
19
+@@ -24,6 +24,7 @@
20
+ #include "libavutil/avassert.h"
21
+ #include "libavutil/bprint.h"
22
+ #include "libavutil/imgutils.h"
23
++#include "libavutil/stereo3d.h"
24
+ #include "avcodec.h"
25
+ #include "bytestream.h"
26
+ #include "internal.h"
27
+@@ -1164,6 +1165,21 @@ static int decode_frame_common(AVCodecContext *avctx, PNGDecContext *s,
28
+                 av_log(avctx, AV_LOG_WARNING, "Broken zTXt chunk\n");
29
+             bytestream2_skip(&s->gb, length + 4);
30
+             break;
31
++        case MKTAG('s', 'T', 'E', 'R'): {
32
++            AVStereo3D *stereo3d = av_stereo3d_create_side_data(p);
33
++            if (!stereo3d) {
34
++                goto fail;
35
++            } else if (*s->gb.buffer == 0) {
36
++                stereo3d->type  = AV_STEREO3D_SIDEBYSIDE;
37
++                stereo3d->flags = AV_STEREO3D_FLAG_INVERT;
38
++            } else if (*s->gb.buffer == 1) {
39
++                stereo3d->type  = AV_STEREO3D_SIDEBYSIDE;
40
++            } else {
41
++                 av_log(avctx, AV_LOG_WARNING, "Broken sTER chunk - unknown value\n");
42
++            }
43
++            bytestream2_skip(&s->gb, length + 4);
44
++            break;
45
++        }
46
+         case MKTAG('I', 'E', 'N', 'D'):
47
+             if (!(s->state & PNG_ALLIMAGE))
48
+                 av_log(avctx, AV_LOG_ERROR, "IEND without all image\n");
49
+diff --git a/libavcodec/pngenc.c b/libavcodec/pngenc.c
50
+index 4204df2..bc61f8f 100644
51
+--- a/libavcodec/pngenc.c
52
++++ b/libavcodec/pngenc.c
53
+@@ -31,6 +31,7 @@
54
+ #include "libavutil/libm.h"
55
+ #include "libavutil/opt.h"
56
+ #include "libavutil/color_utils.h"
57
++#include "libavutil/stereo3d.h"
58
+ 
59
+ #include <zlib.h>
60
+ 
61
+@@ -340,6 +341,7 @@ static int png_get_gama(enum AVColorTransferCharacteristic trc, uint8_t *buf)
62
+ 
63
+ static int encode_headers(AVCodecContext *avctx, const AVFrame *pict)
64
+ {
65
++    AVFrameSideData *side_data;
66
+     PNGEncContext *s = avctx->priv_data;
67
+ 
68
+     /* write png header */
69
+@@ -364,6 +366,23 @@ static int encode_headers(AVCodecContext *avctx, const AVFrame *pict)
70
+     }
71
+     png_write_chunk(&s->bytestream, MKTAG('p', 'H', 'Y', 's'), s->buf, 9);
72
+ 
73
++    /* write stereoscopic information */
74
++    side_data = av_frame_get_side_data(pict, AV_FRAME_DATA_STEREO3D);
75
++    if (side_data) {
76
++        AVStereo3D *stereo3d = (AVStereo3D *)side_data->data;
77
++        switch (stereo3d->type) {
78
++            case AV_STEREO3D_SIDEBYSIDE:
79
++                s->buf[0] = ((stereo3d->flags & AV_STEREO3D_FLAG_INVERT) == 0) ? 1 : 0;
80
++                png_write_chunk(&s->bytestream, MKTAG('s', 'T', 'E', 'R'), s->buf, 1);
81
++                break;
82
++            case AV_STEREO3D_2D:
83
++                break;
84
++            default:
85
++                av_log(avctx, AV_LOG_WARNING, "Only side-by-side stereo3d flag can be defined within sTER chunk\n");
86
++                break;
87
++        }
88
++    }
89
++
90
+     /* write colorspace information */
91
+     if (pict->color_primaries == AVCOL_PRI_BT709 &&
92
+         pict->color_trc == AVCOL_TRC_IEC61966_2_1) {
93
+-- 
94
+2.0.1
95
+
96
sview-15_10.tar.gz/3rdparty/FFmpeg/rebuild.sh -> sview-15_11.tar.gz/3rdparty/FFmpeg/rebuild.sh Changed
194
 
1
@@ -10,6 +10,8 @@
2
 rebuildAndroid="false"
3
 compilerPrefix=""
4
 androidNdkRoot="~/develop/android-ndk-r10"
5
+aSystem=`uname -s`
6
+aPwdBack=$PWD
7
 
8
 for i in $*
9
 do
10
@@ -70,10 +72,25 @@
11
   OUTPUT_NAME="$OUTPUT_NAME-debug"
12
 fi
13
 OUTPUT_FOLDER="../$OUTPUT_NAME"
14
+OUTPUT_FOLDER_INC="$OUTPUT_FOLDER/include"
15
+OUTPUT_FOLDER_BIN="$OUTPUT_FOLDER/bin"
16
+OUTPUT_FOLDER_LIB="$OUTPUT_FOLDER/lib"
17
+if [ "$aSystem" == "Darwin" ]; then
18
+  OUTPUT_FOLDER_BIN="$OUTPUT_FOLDER/MacOS"
19
+  OUTPUT_FOLDER_LIB="$OUTPUT_FOLDER/Frameworks"
20
+fi
21
 rm -f -r $OUTPUT_FOLDER
22
 mkdir -p $OUTPUT_FOLDER
23
-mkdir -p $OUTPUT_FOLDER/bin
24
-mkdir -p $OUTPUT_FOLDER/lib
25
+mkdir -p $OUTPUT_FOLDER_BIN
26
+mkdir -p $OUTPUT_FOLDER_LIB
27
+mkdir -p $OUTPUT_FOLDER_INC
28
+mkdir -p $OUTPUT_FOLDER_INC/libavcodec
29
+mkdir -p $OUTPUT_FOLDER_INC/libavdevice
30
+mkdir -p $OUTPUT_FOLDER_INC/libavfilter
31
+mkdir -p $OUTPUT_FOLDER_INC/libavformat
32
+mkdir -p $OUTPUT_FOLDER_INC/libavutil
33
+mkdir -p $OUTPUT_FOLDER_INC/libswscale
34
+mkdir -p $OUTPUT_FOLDER_INC/libswresample
35
 
36
 echo "  make distclean"
37
 make distclean &>/dev/null
38
@@ -89,21 +106,21 @@
39
   fi
40
 fi
41
 
42
+#--enable-memalign-hack
43
 configArguments="\
44
  --extra-version=sView.ru \
45
  --enable-swscale \
46
  --enable-shared \
47
  --disable-static \
48
- --enable-memalign-hack \
49
  --enable-avfilter \
50
  --enable-hardcoded-tables \
51
  --enable-pthreads \
52
  --disable-libopenjpeg \
53
+ --disable-doc \
54
  --enable-runtime-cpudetect"
55
 
56
-aSystem=`uname -s`
57
 if [ "$aSystem" == "Darwin" ]; then
58
-  configArguments="$configArguments --enable-vda"
59
+  configArguments="$configArguments --enable-vda --libdir=@executable_path/../Frameworks"
60
 fi
61
 
62
 #if [ "$gccMachine" != "$GCC_MACHINE_LINUX_64" ]; then
63
@@ -156,7 +173,7 @@
64
 echo "  ./configure $configArguments"
65
 echo
66
 if [ "$rebuildAndroid" == "true" ]; then
67
-  ./configure $configArguments --disable-symver --extra-cflags='-fno-builtin-sin -fno-builtin-sinf' >$OUTPUT_FOLDER/config.log 2>&1
68
+  ./configure $configArguments --disable-symver --extra-cflags='-march=armv7-a -mfloat-abi=softfp -fno-builtin-sin -fno-builtin-sinf' >$OUTPUT_FOLDER/config.log 2>&1
69
 else
70
   ./configure $configArguments >$OUTPUT_FOLDER/config.log 2>&1
71
 fi
72
@@ -178,85 +195,96 @@
73
   cp -f libavcodec/*.dll $OUTPUT_FOLDER
74
   cp -f libavcodec/*.lib $OUTPUT_FOLDER &>/dev/null
75
 elif [ -f libavcodec/libavcodec.dylib ]; then
76
-  cp -f -p libavcodec/*.dylib* $OUTPUT_FOLDER/lib
77
+  cp -f -p -R libavcodec/*.dylib* $OUTPUT_FOLDER_LIB
78
 else
79
-  cp -f -d libavcodec/*.so* $OUTPUT_FOLDER/lib
80
+  cp -f -d libavcodec/*.so* $OUTPUT_FOLDER_LIB
81
 fi
82
 
83
 if [ -f libavdevice/avdevice.dll ]; then
84
   cp -f libavdevice/*.dll $OUTPUT_FOLDER
85
   cp -f libavdevice/*.lib $OUTPUT_FOLDER &>/dev/null
86
 elif [ -f libavdevice/libavdevice.dylib ]; then
87
-  cp -f -p libavdevice/*.dylib* $OUTPUT_FOLDER/lib
88
+  cp -f -p -R libavdevice/*.dylib* $OUTPUT_FOLDER_LIB
89
 else
90
-  cp -f -d libavdevice/*.so* $OUTPUT_FOLDER/lib
91
+  cp -f -d libavdevice/*.so* $OUTPUT_FOLDER_LIB
92
 fi
93
 
94
 if [ -f libavfilter/avfilter.dll ]; then
95
   cp -f libavfilter/*.dll $OUTPUT_FOLDER
96
   cp -f libavfilter/*.lib $OUTPUT_FOLDER &>/dev/null
97
 elif [ -f libavfilter/libavfilter.dylib ]; then
98
-  cp -f -p libavfilter/*.dylib* $OUTPUT_FOLDER/lib
99
+  cp -f -p -R libavfilter/*.dylib* $OUTPUT_FOLDER_LIB
100
 else
101
-  cp -f -d libavfilter/*.so* $OUTPUT_FOLDER/lib
102
+  cp -f -d libavfilter/*.so* $OUTPUT_FOLDER_LIB
103
 fi
104
 
105
 if [ -f libavformat/avformat.dll ]; then
106
   cp -f libavformat/*.dll $OUTPUT_FOLDER
107
   cp -f libavformat/*.lib $OUTPUT_FOLDER &>/dev/null
108
 elif [ -f libavformat/libavformat.dylib ]; then
109
-  cp -f -p libavformat/*.dylib* $OUTPUT_FOLDER/lib
110
+  cp -f -p -R libavformat/*.dylib* $OUTPUT_FOLDER_LIB
111
 else
112
-  cp -f -d libavformat/*.so* $OUTPUT_FOLDER/lib
113
+  cp -f -d libavformat/*.so* $OUTPUT_FOLDER_LIB
114
 fi
115
 
116
 if [ -f libavutil/avutil.dll ]; then
117
   cp -f libavutil/*.dll $OUTPUT_FOLDER
118
   cp -f libavutil/*.lib $OUTPUT_FOLDER &>/dev/null
119
 elif [ -f libavutil/libavutil.dylib ]; then
120
-  cp -f -p libavutil/*.dylib* $OUTPUT_FOLDER/lib
121
+  cp -f -p -R libavutil/*.dylib* $OUTPUT_FOLDER_LIB
122
 else
123
-  cp -f -d libavutil/*.so* $OUTPUT_FOLDER/lib
124
+  cp -f -d libavutil/*.so* $OUTPUT_FOLDER_LIB
125
 fi
126
 
127
 if [ -f libswscale/swscale.dll ]; then
128
   cp -f libswscale/*.dll $OUTPUT_FOLDER
129
   cp -f libswscale/*.lib $OUTPUT_FOLDER &>/dev/null
130
 elif [ -f libswscale/libswscale.dylib ]; then
131
-  cp -f -p libswscale/*.dylib* $OUTPUT_FOLDER/lib
132
+  cp -f -p -R libswscale/*.dylib* $OUTPUT_FOLDER_LIB
133
 else
134
-  cp -f -d libswscale/*.so* $OUTPUT_FOLDER/lib
135
+  cp -f -d libswscale/*.so* $OUTPUT_FOLDER_LIB
136
 fi
137
 
138
 if [ -f libswresample/swresample.dll ]; then
139
   cp -f libswresample/*.dll $OUTPUT_FOLDER
140
   cp -f libswresample/*.lib $OUTPUT_FOLDER &>/dev/null
141
 elif [ -f libswresample/libswresample.dylib ]; then
142
-  cp -f -p libswresample/*.dylib* $OUTPUT_FOLDER/lib
143
+  cp -f -p -R libswresample/*.dylib* $OUTPUT_FOLDER_LIB
144
 else
145
-  cp -f -d libswresample/*.so* $OUTPUT_FOLDER/lib
146
+  cp -f -d libswresample/*.so* $OUTPUT_FOLDER_LIB
147
 fi
148
 
149
 cp -f *.exe      $OUTPUT_FOLDER &>/dev/null
150
-cp -f ffmpeg     $OUTPUT_FOLDER/bin &>/dev/null
151
-cp -f ffmpeg_g   $OUTPUT_FOLDER/bin &>/dev/null
152
-cp -f ffprobe    $OUTPUT_FOLDER/bin &>/dev/null
153
-cp -f ffprobe_g  $OUTPUT_FOLDER/bin &>/dev/null
154
-cp -f ffserver   $OUTPUT_FOLDER/bin &>/dev/null
155
-cp -f ffserver_g $OUTPUT_FOLDER/bin &>/dev/null
156
-cp -f ffplay     $OUTPUT_FOLDER/bin &>/dev/null
157
+cp -f ffmpeg     $OUTPUT_FOLDER_BIN &>/dev/null
158
+cp -f ffmpeg_g   $OUTPUT_FOLDER_BIN &>/dev/null
159
+cp -f ffprobe    $OUTPUT_FOLDER_BIN &>/dev/null
160
+cp -f ffprobe_g  $OUTPUT_FOLDER_BIN &>/dev/null
161
+cp -f ffserver   $OUTPUT_FOLDER_BIN &>/dev/null
162
+cp -f ffserver_g $OUTPUT_FOLDER_BIN &>/dev/null
163
+cp -f ffplay     $OUTPUT_FOLDER_BIN &>/dev/null
164
+
165
+cp -f libavcodec/*.h    $OUTPUT_FOLDER_INC/libavcodec    &>/dev/null
166
+cp -f libavdevice/*.h   $OUTPUT_FOLDER_INC/libavdevice   &>/dev/null
167
+cp -f libavfilter/*.h   $OUTPUT_FOLDER_INC/libavfilter   &>/dev/null
168
+cp -f libavformat/*.h   $OUTPUT_FOLDER_INC/libavformat   &>/dev/null
169
+cp -f libavutil/*.h     $OUTPUT_FOLDER_INC/libavutil     &>/dev/null
170
+cp -f libswscale/*.h    $OUTPUT_FOLDER_INC/libswscale    &>/dev/null
171
+cp -f libswresample/*.h $OUTPUT_FOLDER_INC/libswresample &>/dev/null
172
 
173
 # remove duplicates (only Windows)
174
 rm $OUTPUT_FOLDER/avcodec.dll $OUTPUT_FOLDER/swresample.dll $OUTPUT_FOLDER/avdevice.dll $OUTPUT_FOLDER/avfilter.dll $OUTPUT_FOLDER/avformat.dll $OUTPUT_FOLDER/avutil.dll $OUTPUT_FOLDER/swscale.dll &>/dev/null
175
 
176
 # create binaries archive
177
-if command -v 7za &>/dev/null
178
+if [ "$aSystem" == "Darwin" ]; then
179
+  rm $OUTPUT_FOLDER/../$OUTPUT_NAME.tar.gz &>/dev/null
180
+  cd $OUTPUT_FOLDER
181
+  tar -cvzf $OUTPUT_FOLDER/../$OUTPUT_NAME.tar.gz *
182
+elif command -v 7za &>/dev/null
183
 then
184
-  # binaries
185
   rm $OUTPUT_FOLDER/../$OUTPUT_NAME.7z &>/dev/null
186
   7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on $OUTPUT_FOLDER/../$OUTPUT_NAME.7z $OUTPUT_FOLDER
187
-  rm -f -r $OUTPUT_FOLDER
188
 fi
189
 
190
 # come back
191
-cd ..
192
+cd $aPwdBack
193
+#rm -f -r $OUTPUT_FOLDER
194
sview-15_10.tar.gz/3rdparty/FFmpeg/rebuildBatch.sh -> sview-15_11.tar.gz/3rdparty/FFmpeg/rebuildBatch.sh Changed
40
 
1
@@ -2,15 +2,15 @@
2
 
3
 # This is helpful script to perform building of FFmpeg
4
 
5
-# MinGW tools for Ubuntu; http://ffmpeg.arrozcru.org/wiki/index.php?title=Aptrepository
6
-# Add gpg key to your system 
7
-#$ gpg --keyserver keyserver.ubuntu.com --recv-key 0x25E635F9
8
-#$ gpg --export --armor 0x25E635F9 | sudo apt-key add -
9
-#deb http://apt.arrozcru.org ./
10
-#deb-src http://apt.arrozcru.org ./
11
+# mingw for cross-compiling
12
+#sudo apt-get install binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64-i686 g++-mingw-w64-x86-64 gcc-mingw-w64 gcc-mingw-w64-base gcc-mingw-w64-i686 gcc-mingw-w64-x86-64
13
+#sudo apt-get install mingw-w64 mingw-w64-common mingw-w64-tools yasm p7zip-full git git-gui gitk
14
 
15
-#sudo apt-get install mingw32-w32api mingw32-runtime mingw32-gcc-4.4 mingw32-binutils mingw32-zlib mingw32-bzip2 mingw32-pthreads 
16
-#sudo apt-get install mingw-w64-w32api mingw-w64-runtime mingw-w64-gcc-4.4 mingw-w64-crt mingw-w64-binutils mingw-w64-headers mingw-w64-zlib mingw-w64-bzip2 mingw-w64-pthreads
17
+# avoid linkage with dynamic version of libwinpthread.dll
18
+#sudo mv /usr/x86_64-w64-mingw32/lib/libpthread.dll.a /usr/x86_64-w64-mingw32/lib/__libpthread.dll.a
19
+#sudo mv /usr/x86_64-w64-mingw32/lib/libwinpthread.dll.a /usr/x86_64-w64-mingw32/lib/__libwinpthread.dll.a
20
+#sudo mv /usr/i686-w64-mingw32/lib/libpthread.dll.a /usr/i686-w64-mingw32/lib/__libpthread.dll.a
21
+#sudo mv /usr/i686-w64-mingw32/lib/libwinpthread.dll.a /usr/i686-w64-mingw32/lib/__libwinpthread.dll.a
22
 
23
 rebuildTarget="FFmpeg"
24
 if [ "$1" != "" ]; then
25
@@ -35,10 +35,10 @@
26
 fi
27
 
28
 # build for Win32 x86
29
-#./rebuild.sh "$rebuildTarget" GPL  DEBUG   "i686-mingw32-"
30
-./rebuild.sh "$rebuildTarget" LGPL DEBUG   "i686-mingw32-"
31
-./rebuild.sh "$rebuildTarget" GPL  RELEASE "i686-mingw32-"
32
-./rebuild.sh "$rebuildTarget" LGPL RELEASE "i686-mingw32-"
33
+#./rebuild.sh "$rebuildTarget" GPL  DEBUG   "i686-w64-mingw32-"
34
+./rebuild.sh "$rebuildTarget" LGPL DEBUG   "i686-w64-mingw32-"
35
+./rebuild.sh "$rebuildTarget" GPL  RELEASE "i686-w64-mingw32-"
36
+./rebuild.sh "$rebuildTarget" LGPL RELEASE "i686-w64-mingw32-"
37
 
38
 # build for Win32 AMD64
39
 #./rebuild.sh "$rebuildTarget" GPL  DEBUG   "x86_64-w64-mingw32-"
40
sview-15_11.tar.gz/LICENSE.md Added
62
 
1
@@ -0,0 +1,60 @@
2
+## Libraries
3
+
4
+* StShared
5
+* StGLWidget
6
+* StCore
7
+* StOutAnaglyph
8
+* StOutDual
9
+* StOutInterlace
10
+* StOutIZ3D
11
+* StOutPageFlip
12
+
13
+Sources of these libraries are under Boost license.
14
+Read the file [license-boost.txt](license-boost.txt) for details.
15
+
16
+Notice that some sources are wrappers over other 3rd-parties
17
+and their licenses should be taken into account when used.
18
+
19
+## sView
20
+
21
+* StImageViewer
22
+* StMoviePlayer
23
+* StDiagnostics
24
+* StMonitorsDump
25
+* StBrowserPlugin
26
+* StTests
27
+
28
+These libraries and programs are under the GNU General Public License version 3.0 or later.<br/>
29
+Read the file [license-gpl-3.0.txt](license-gpl-3.0.txt) for details.
30
+
31
+Note that sView executable project is a dummy entry point to real applications like StImageViewer.<br/>
32
+Formally it was licensed under Boost license terms.
33
+
34
+## StCADViewer
35
+
36
+This program is under the GNU General Public License version 3.0 or later.
37
+
38
+## External libraries
39
+
40
+* FFmpeg libraries are distributed under GNU Lesser General Public License version 2.1 or later.<br/>
41
+  http://ffmpeg.org/
42
+* libconfig++ library distributed under GNU Lesser General Public License version 2.1 or later.<br/>
43
+  http://www.hyperrealm.com/libconfig/
44
+* OpenAL library distributed under GNU Lesser General Public License version 2.1 or later.<br/>
45
+  http://kcat.strangesoft.net/openal.html
46
+* FreeType library distributed under FreeType License (BSD-style license with a credit clause).<br/>
47
+  http://www.freetype.org/
48
+* Open CASCADE Technology libraries distributed under GNU Lesser General Public License version 2.1.<br/>
49
+  http://dev.opencascade.org/
50
+
51
+Some 3rd-parties may depend on other libraries and provide more license options.
52
+Please read license information for original projects.
53
+
54
+## Icons
55
+
56
+Images in folders [texturesSrc](texturesSrc) and [textures](textures)
57
+are available under the [license CC-BY 4.0](license-CC-BY-4.0.txt) (Creative Common Attribution 4.0 International License).
58
+Feel free to remix and re-share these icons in your products.
59
+
60
+Some of the images have been derived from Material Design icons shared by Google:<br/>
61
+https://github.com/google/material-design-icons
62
sview-15_11.tar.gz/README.md Added
41
 
1
@@ -0,0 +1,39 @@
2
+sView - stereoscopic media player
3
+=================================
4
+
5
+sView is an easy to use cross-platform solution to view 3D stereoscopic videos and images.
6
+Please visit official site for more information:<br/>
7
+http://www.sview.ru
8
+
9
+## Libraries
10
+
11
+* `libStShared` threads, mutexes, template-based signals and slots, OpenGL tools, settings management, and other tools.
12
+* `libStGLWidgets` compact C++ toolkit for writing GUI using OpenGL 2.1+ or OpenGL ES 2.0+.
13
+* `libStCore` window system independent C++ toolkit for writing OpenGL applications.
14
+* `libStOutAnaglyph` stereoscopic output in anaglyph format using GLSL programs.
15
+* `libStOutDistorted` stereoscopic output in anamorph side-by-side format.
16
+* `libStOutDual` stereoscopic output through two dedicated interfaces.
17
+* `libStOutInterlace` stereoscopic output for row interlaced displays using GLSL programs.
18
+* `libStOutIZ3D` stereoscopic output for iZ3D monitors using GLSL programs.
19
+* `libStOutPageFlip` stereoscopic output for shutter glasses devices.
20
+
21
+## Updates
22
+
23
+To get up-to-date sources please clone official git repository:
24
+~~~~~
25
+  git clone https://github.com/gkv311/sview.git
26
+~~~~~
27
+
28
+## Documentation
29
+
30
+Read the documentation in the **doc/** directory in git.
31
+Online help is available on official site:<br/>
32
+http://www.sview.ru/en/sview/usertips/
33
+
34
+## Licensing
35
+
36
+See the [LICENSE](LICENSE.md) file.
37
+
38
+## Build and Install
39
+
40
+See the [docs/INSTALL](docs/INSTALL.md) file.
41
sview-15_10.tar.gz/StBrowserPlugin/StBrowserPlugin.cbp -> sview-15_11.tar.gz/StBrowserPlugin/StBrowserPlugin.cbp Changed
103
 
1
@@ -6,32 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/npStBrowserPlugin" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Compiler>
11
-                   <Add option="-O3" />
12
-                   <Add option="-std=c++0x" />
13
-                   <Add option="-Wall" />
14
-                   <Add option="-g" />
15
-                   <Add option="-shared" />
16
-                   <Add option="-mmmx" />
17
-                   <Add option="-msse" />
18
-                   <Add option="-DUNICODE" />
19
-                   <Add option="-DST_DEBUG" />
20
-                   <Add option="-D__MSVCRT_VERSION__=0x0601" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add option="--input-def StBrowserPluginNPAPI.def" />
25
-                   <Add library="user32" />
26
-                   <Add library="advapi32" />
27
-                   <Add library="shell32" />
28
-                   <Add library="Version" />
29
-               </Linker>
30
-           </Target>
31
            <Target title="WIN_vc_x86">
32
                <Option output="../bin/$(TARGET_NAME)/npStBrowserPlugin" prefix_auto="1" extension_auto="1" />
33
                <Option object_output="obj/$(TARGET_NAME)/" />
34
@@ -65,11 +39,11 @@
35
                    <Add before='midl /nologo /win32 /W1 $res_includes /client none /tlb &quot;$(TARGET_OBJECT_DIR)\StActiveX.idl.tlb&quot; StActiveX.idl' />
36
                </ExtraCommands>
37
            </Target>
38
-           <Target title="WIN_vc_x86_DEBUG">
39
+           <Target title="WIN_vc_AMD64_DEBUG">
40
                <Option output="../bin/$(TARGET_NAME)/npStBrowserPlugin" prefix_auto="1" extension_auto="1" />
41
                <Option object_output="obj/$(TARGET_NAME)/" />
42
                <Option type="3" />
43
-               <Option compiler="msvc10" />
44
+               <Option compiler="windows_sdk_x86_64" />
45
                <Compiler>
46
                    <Add option="/MDd" />
47
                    <Add option="/Od" />
48
@@ -95,7 +69,7 @@
49
                    <Add library="advapi32" />
50
                    <Add library="shell32" />
51
                    <Add library="Version" />
52
-                   <Add directory="../3rdparty/atlmfc/lib" />
53
+                   <Add directory="../3rdparty/atlmfc/lib/amd64" />
54
                </Linker>
55
                <ExtraCommands>
56
                    <Add before='cmd /c IF NOT EXIST &quot;$(TARGET_OBJECT_DIR)&quot; MKDIR &quot;$(TARGET_OBJECT_DIR)&quot;' />
57
@@ -255,40 +229,33 @@
58
        <Unit filename="NSPluginBase.h" />
59
        <Unit filename="StActiveX.idl">
60
            <Option target="WIN_vc_x86" />
61
-           <Option target="WIN_vc_x86_DEBUG" />
62
+           <Option target="WIN_vc_AMD64_DEBUG" />
63
            <Option target="WIN_vc_AMD64" />
64
        </Unit>
65
        <Unit filename="StActiveXCtrl.cpp">
66
            <Option weight="40" />
67
            <Option target="WIN_vc_x86" />
68
-           <Option target="WIN_vc_x86_DEBUG" />
69
+           <Option target="WIN_vc_AMD64_DEBUG" />
70
            <Option target="WIN_vc_AMD64" />
71
        </Unit>
72
        <Unit filename="StActiveXCtrl.h" />
73
        <Unit filename="StActiveXModule.cpp">
74
            <Option target="WIN_vc_x86" />
75
-           <Option target="WIN_vc_x86_DEBUG" />
76
+           <Option target="WIN_vc_AMD64_DEBUG" />
77
            <Option target="WIN_vc_AMD64" />
78
        </Unit>
79
        <Unit filename="StActiveXModule.h" />
80
        <Unit filename="StBrPluginInfo.h" />
81
        <Unit filename="StBrowserPlugin.cpp" />
82
-       <Unit filename="StBrowserPlugin.def">
83
-           <Option target="WIN_gcc_x86" />
84
-       </Unit>
85
        <Unit filename="StBrowserPlugin.h" />
86
        <Unit filename="StBrowserPlugin.rc">
87
            <Option compilerVar="WINDRES" />
88
            <Option compiler="windows_sdk_x86_64" use="1" buildCommand='$rescomp -DST_OCX_TLB_PATH=&quot;$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb&quot; $res_includes -fo $resource_output $file' />
89
-           <Option compiler="windows_sdk_x86" use="1" buildCommand='$rescomp -DST_OCX_TLB_PATH=&quot;$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb&quot; $res_includes -fo $resource_output $file' />
90
-           <Option target="WIN_gcc_x86" />
91
+           <Option compiler="msvc10" use="1" buildCommand='$rescomp -DST_OCX_TLB_PATH=&quot;$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb&quot; $res_includes -fo $resource_output $file' />
92
            <Option target="WIN_vc_x86" />
93
-           <Option target="WIN_vc_x86_DEBUG" />
94
+           <Option target="WIN_vc_AMD64_DEBUG" />
95
            <Option target="WIN_vc_AMD64" />
96
        </Unit>
97
-       <Unit filename="StBrowserPluginNPAPI.def">
98
-           <Option target="WIN_gcc_x86" />
99
-       </Unit>
100
        <Unit filename="npEntry.cpp" />
101
        <Unit filename="npapi.h" />
102
        <Unit filename="npfunctions.h" />
103
sview-15_10.tar.gz/StCADViewer/StCADViewer.cbp -> sview-15_11.tar.gz/StCADViewer/StCADViewer.cbp Changed
77
 
1
@@ -6,41 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStCADViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option parameters="--in=StCADViewer" />
11
-               <Option host_application="../bin/$(TARGET_NAME)/sView" />
12
-               <Option run_host_application_in_terminal="0" />
13
-               <Option createStaticLib="1" />
14
-               <Compiler>
15
-                   <Add option="-O3" />
16
-                   <Add option="-std=c++0x" />
17
-                   <Add option="-Wall" />
18
-                   <Add option="-g" />
19
-                   <Add option="-shared" />
20
-                   <Add option="-mmmx" />
21
-                   <Add option="-msse" />
22
-                   <Add option="-DUNICODE" />
23
-                   <Add option="-DST_DEBUG" />
24
-                   <Add option="-DWNT" />
25
-                   <Add option="-DST_HAVE_STCONFIG" />
26
-               </Compiler>
27
-               <Linker>
28
-                   <Add library="opengl32" />
29
-                   <Add library="gdi32" />
30
-                   <Add library="Comdlg32" />
31
-                   <Add library="shell32" />
32
-                   <Add library="Wsock32" />
33
-                   <Add library="Version" />
34
-                   <Add directory="../3rdparty/OCCT/lib/WIN_vc_x86" />
35
-               </Linker>
36
-               <ExtraCommands>
37
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
38
-               </ExtraCommands>
39
-           </Target>
40
            <Target title="WIN_vc_x86">
41
                <Option output="../bin/$(TARGET_NAME)/StCADViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
@@ -77,11 +42,11 @@
44
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
45
                </ExtraCommands>
46
            </Target>
47
-           <Target title="WIN_vc_x86_DEBUG">
48
+           <Target title="WIN_vc_AMD64_DEBUG">
49
                <Option output="../bin/$(TARGET_NAME)/StCADViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
50
                <Option object_output="obj/$(TARGET_NAME)/" />
51
                <Option type="3" />
52
-               <Option compiler="msvc10" />
53
+               <Option compiler="windows_sdk_x86_64" />
54
                <Option parameters="--in=StCADViewer" />
55
                <Option host_application="../bin/$(TARGET_NAME)/sView" />
56
                <Option run_host_application_in_terminal="0" />
57
@@ -112,7 +77,7 @@
58
                    <Add library="shell32" />
59
                    <Add library="Wsock32" />
60
                    <Add library="Version" />
61
-                   <Add directory="../3rdparty/OCCT/lib/WIN_vc_x86" />
62
+                   <Add directory="../3rdparty/OCCT/lib/WIN_vc_AMD64" />
63
                </Linker>
64
                <ExtraCommands>
65
                    <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
66
@@ -306,9 +271,8 @@
67
        <Unit filename="StCADViewer.h" />
68
        <Unit filename="StCADViewer.rc">
69
            <Option compilerVar="WINDRES" />
70
-           <Option target="WIN_gcc_x86" />
71
            <Option target="WIN_vc_x86" />
72
-           <Option target="WIN_vc_x86_DEBUG" />
73
+           <Option target="WIN_vc_AMD64_DEBUG" />
74
            <Option target="WIN_vc_AMD64" />
75
        </Unit>
76
        <Unit filename="StCADViewerGUI.cpp" />
77
sview-15_10.tar.gz/StCADViewer/StCADViewer.cpp -> sview-15_11.tar.gz/StCADViewer/StCADViewer.cpp Changed
14
 
1
@@ -589,7 +589,11 @@
2
 }
3
 
4
 void StCADViewer::doFileDrop(const StDNDropEvent& theEvent) {
5
-    const StString aFilePath = theEvent.File;
6
+    if(theEvent.NbFiles == 0) {
7
+        return;
8
+    }
9
+
10
+    const StString aFilePath = theEvent.Files[0];
11
     if(myCADLoader->getPlayList().checkExtension(aFilePath)) {
12
         myCADLoader->getPlayList().open(aFilePath);
13
         doUpdateStateLoading();
14
sview-15_10.tar.gz/StCADViewer/lang/chinese/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/chinese/StCADViewer.lng Changed
49
 
1
@@ -2,25 +2,25 @@
2
 @author Kirill Gavrilov
3
 
4
 --------
5
-1200="View"
6
-1201="Projection type"
7
-1202="Fullscreen"
8
-1203="Show normals"
9
-1204="Show trihedron"
10
-1205="Two sides lighting"
11
-1206="Projection"
12
-1207="Fill Mode"
13
-1208="Fit ALL"
14
-1240="Orthogonal"
15
-1241="Perspective"
16
-1242="Stereo"
17
-1250="Mesh"
18
-1251="Shaded"
19
-1252="Shaded + Mesh"
20
-1500="Help"
21
-1501="About..."
22
-1503="License text"
23
-1504="Language"
24
-3000="sView - Tiny CAD Viewer"
25
-3001="version"
26
-3002="CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru"
27
+?1200=View
28
+?1201=Projection type
29
+?1202=Fullscreen
30
+?1203=Show normals
31
+?1204=Show trihedron
32
+?1205=Two sides lighting
33
+?1206=Projection
34
+?1207=Fill Mode
35
+?1208=Fit ALL
36
+?1240=Orthogonal
37
+?1241=Perspective
38
+?1242=Stereo
39
+?1250=Mesh
40
+?1251=Shaded
41
+?1252=Shaded + Mesh
42
+?1500=Help
43
+?1501=About...
44
+?1503=License text
45
+?1504=Language
46
+?3000=sView - Tiny CAD Viewer
47
+?3001=version
48
+?3002=CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru
49
sview-15_10.tar.gz/StCADViewer/lang/english/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/english/StCADViewer.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # English translation file for StCADViewer
3
 # @author Kirill Gavrilov
4
 --------
5
-1200="View"
6
-1201="Projection type"
7
-1202="Fullscreen"
8
-1203="Show normals"
9
-1204="Show trihedron"
10
-1205="Two sides lighting"
11
-1206="Projection"
12
-1207="Fill Mode"
13
-1208="Fit ALL"
14
-1240="Orthogonal"
15
-1241="Perspective"
16
-1242="Stereo"
17
-1250="Mesh"
18
-1251="Shaded"
19
-1252="Shaded + Mesh"
20
-1500="Help"
21
-1501="About..."
22
-1503="License text"
23
-1504="Language"
24
-3000="sView - Tiny CAD Viewer"
25
-3001="version"
26
-3002="CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru"
27
+1200=View
28
+1201=Projection type
29
+1202=Fullscreen
30
+1203=Show normals
31
+1204=Show trihedron
32
+1205=Two sides lighting
33
+1206=Projection
34
+1207=Fill Mode
35
+1208=Fit ALL
36
+1240=Orthogonal
37
+1241=Perspective
38
+1242=Stereo
39
+1250=Mesh
40
+1251=Shaded
41
+1252=Shaded + Mesh
42
+1500=Help
43
+1501=About...
44
+1503=License text
45
+1504=Language
46
+3000=sView - Tiny CAD Viewer
47
+3001=version
48
+3002=CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru
49
sview-15_10.tar.gz/StCADViewer/lang/french/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/french/StCADViewer.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # French translation file for StCADViewer
3
 # @author Kirill Gavrilov
4
 --------
5
-1200="Voir"
6
-1201="Type de projection"
7
-1202="Plein Ecran"
8
-1203="Show normals"
9
-1204="Show trihedron"
10
-1205="Two sides lighting"
11
-1206="Projection"
12
-1207="Fill Mode"
13
-1208="Fit ALL"
14
-1240="Orthogonal"
15
-1241="Perspective"
16
-1242="Stereo"
17
-1250="Mesh"
18
-1251="Shaded"
19
-1252="Shaded + Mesh"
20
-1500="Aide"
21
-1501="A Propos..."
22
-1503="Texte de la Licence"
23
-1504="Language"
24
-3000="sView - Tiny CAD Viewer"
25
-3001="version"
26
-3002="CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru"
27
+1200=Voir
28
+1201=Type de projection
29
+1202=Plein Ecran
30
+?1203=Show normals
31
+?1204=Show trihedron
32
+?1205=Two sides lighting
33
+?1206=Projection
34
+?1207=Fill Mode
35
+?1208=Fit ALL
36
+?1240=Orthogonal
37
+?1241=Perspective
38
+?1242=Stereo
39
+?1250=Mesh
40
+?1251=Shaded
41
+?1252=Shaded + Mesh
42
+1500=Aide
43
+1501=A Propos...
44
+1503=Texte de la Licence
45
+1504=Language
46
+3000=sView - Tiny CAD Viewer
47
+3001=version
48
+?3002=CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru
49
sview-15_10.tar.gz/StCADViewer/lang/german/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/german/StCADViewer.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # German translation file for StCADViewer
3
 # @author Kirill Gavrilov
4
 --------
5
-1200="Ansicht"
6
-1201="Projection type"
7
-1202="Vollbild"
8
-1203="Normalen anzeigen"
9
-1204="Dreibein anzeigen"
10
-1205="Zwei einseitige Beleuchtung"
11
-1206="Projektion"
12
-1207="Füllmodus"
13
-1208="Fit ALL"
14
-1240="Orthogonal"
15
-1241="Perspektive"
16
-1242="Stereo"
17
-1250="Mesh"
18
-1251="Beschattet"
19
-1252="Beschattet + Mesh"
20
-1500="Hilfe"
21
-1501="Über..."
22
-1503="Lizenztext"
23
-1504="Language"
24
-3000="sView - winzig CAD Viewer"
25
-3001="Version"
26
-3002="CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru"
27
+1200=Ansicht
28
+1201=Projection type
29
+1202=Vollbild
30
+1203=Normalen anzeigen
31
+1204=Dreibein anzeigen
32
+1205=Zwei einseitige Beleuchtung
33
+1206=Projektion
34
+1207=Füllmodus
35
+?1208=Fit ALL
36
+1240=Orthogonal
37
+1241=Perspektive
38
+1242=Stereo
39
+1250=Mesh
40
+1251=Beschattet
41
+1252=Beschattet + Mesh
42
+1500=Hilfe
43
+1501=Über...
44
+1503=Lizenztext
45
+1504=Language
46
+3000=sView - winzig CAD Viewer
47
+3001=Version
48
+3002=CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru
49
sview-15_10.tar.gz/StCADViewer/lang/korean/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/korean/StCADViewer.lng Changed
49
 
1
@@ -2,25 +2,25 @@
2
 @author Kirill Gavrilov
3
 
4
 --------
5
-1200="View"
6
-1201="Projection type"
7
-1202="Fullscreen"
8
-1203="Show normals"
9
-1204="Show trihedron"
10
-1205="Two sides lighting"
11
-1206="Projection"
12
-1207="Fill Mode"
13
-1208="Fit ALL"
14
-1240="Orthogonal"
15
-1241="Perspective"
16
-1242="Stereo"
17
-1250="Mesh"
18
-1251="Shaded"
19
-1252="Shaded + Mesh"
20
-1500="Help"
21
-1501="About..."
22
-1503="License text"
23
-1504="Language"
24
-3000="sView - Tiny CAD Viewer"
25
-3001="version"
26
-3002="CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru"
27
+?1200=View
28
+?1201=Projection type
29
+?1202=Fullscreen
30
+?1203=Show normals
31
+?1204=Show trihedron
32
+?1205=Two sides lighting
33
+?1206=Projection
34
+?1207=Fill Mode
35
+?1208=Fit ALL
36
+?1240=Orthogonal
37
+?1241=Perspective
38
+?1242=Stereo
39
+?1250=Mesh
40
+?1251=Shaded
41
+?1252=Shaded + Mesh
42
+?1500=Help
43
+?1501=About...
44
+?1503=License text
45
+?1504=Language
46
+?3000=sView - Tiny CAD Viewer
47
+?3001=version
48
+?3002=CAD viewer allows you to view CAD files in formats IGES, STEP, BREP using OpenCASCADE Technology.\n © 2011-2014 Kirill Gavrilov (kirill@sview.ru).\nOfficial site: www.sview.ru
49
sview-15_10.tar.gz/StCADViewer/lang/russian/StCADViewer.lng -> sview-15_11.tar.gz/StCADViewer/lang/russian/StCADViewer.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # Russian translation file for StCADViewer
3
 # @author Kirill Gavrilov
4
 --------
5
-1200="Вид"
6
-1201="Тип проекции"
7
-1202="Полный экран"
8
-1203="Отображать нормали"
9
-1204="Show trihedron"
10
-1205="Two sides lighting"
11
-1206="Проекция"
12
-1207="Fill Mode"
13
-1208="Вписать модель"
14
-1240="Ортогональная"
15
-1241="Перспективная"
16
-1242="Стерео"
17
-1250="Mesh"
18
-1251="Shaded"
19
-1252="Shaded + Mesh"
20
-1500="Помощь"
21
-1501="О программе..."
22
-1503="Открыть лицензию"
23
-1504="Language"
24
-3000="sView - приложение для просмотра CAD моделей"
25
-3001="версия"
26
-3002="Программа открывает CAD модели в форматах IGES, STEP, BREP с помощью OpenCASCADE Technology.\n © 2011-2014 Гаврилов Кирилл (kirill@sview.ru).\nОфициальный сайт: www.sview.ru"
27
+1200=Вид
28
+1201=Тип проекции
29
+1202=Полный экран
30
+1203=Отображать нормали
31
+1204=Show trihedron
32
+1205=Two sides lighting
33
+1206=Проекция
34
+1207=Fill Mode
35
+1208=Вписать модель
36
+1240=Ортогональная
37
+1241=Перспективная
38
+1242=Стерео
39
+1250=Mesh
40
+1251=Shaded
41
+1252=Shaded + Mesh
42
+1500=Помощь
43
+1501=О программе...
44
+1503=Открыть лицензию
45
+1504=Language
46
+3000=sView - приложение для просмотра CAD моделей
47
+3001=версия
48
+3002=Программа открывает CAD модели в форматах IGES, STEP, BREP с помощью OpenCASCADE Technology.\n © 2011-2014 Гаврилов Кирилл (kirill@sview.ru).\nОфициальный сайт: www.sview.ru
49
sview-15_10.tar.gz/StCore/StADLsdk.cpp -> sview-15_11.tar.gz/StCore/StADLsdk.cpp Changed
34
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __APPLE__
25
@@ -27,7 +18,7 @@
26
 #elif(defined(__linux__) || defined(__linux))
27
     static const char LIB_NAME[]    = "libatiadlxx";
28
 #endif
29
-};
30
+}
31
 
32
 bool StADLsdk::countAdapters() {
33
     if(myFunctions.ADL_Adapter_AdapterInfo_Get      == NULL
34
sview-15_10.tar.gz/StCore/StADLsdk.h -> sview-15_11.tar.gz/StCore/StADLsdk.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __APPLE__
25
sview-15_10.tar.gz/StCore/StAndroidGlue.cpp -> sview-15_11.tar.gz/StCore/StAndroidGlue.cpp Changed
111
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2014-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if defined(__ANDROID__)
25
@@ -51,6 +42,54 @@
26
     return stCString("UNKNOWN");
27
 }
28
 
29
+/**
30
+ * Read string from jstring.
31
+ */
32
+inline StString stStringFromJava(JNIEnv* theJEnv,
33
+                                 jstring theJString) {
34
+    if(theJString == NULL) {
35
+        return StString();
36
+    }
37
+
38
+    const char* aJStringStr = theJEnv->GetStringUTFChars(theJString, 0);
39
+    const StString aString = aJStringStr;
40
+    theJEnv->ReleaseStringUTFChars(theJString, aJStringStr);
41
+    return aString;
42
+}
43
+
44
+StString StAndroidGlue::getStoragePath(JNIEnv*     theJEnv,
45
+                                       const char* theType) {
46
+    jclass aJClass_Env  = theJEnv->FindClass("android/os/Environment");
47
+    jclass aJClass_File = theJEnv->FindClass("java/io/File");
48
+    if(aJClass_Env  == NULL
49
+    || aJClass_File == NULL) {
50
+        return StString();
51
+    }
52
+
53
+    jmethodID aJMet_getStorage = theJEnv->GetStaticMethodID(aJClass_Env,  "getExternalStoragePublicDirectory", "(Ljava/lang/String;)Ljava/io/File;");
54
+    jmethodID aJMet_getSdCard  = theJEnv->GetStaticMethodID(aJClass_Env,  "getExternalStorageDirectory",       "()Ljava/io/File;");
55
+    jmethodID aJMet_getPath    = theJEnv->GetMethodID      (aJClass_File, "getAbsolutePath",                   "()Ljava/lang/String;");
56
+    if(aJMet_getStorage == NULL
57
+    || aJMet_getSdCard  == NULL
58
+    || aJMet_getPath    == NULL) {
59
+        return StString();
60
+    }
61
+
62
+    StString aType  = theType;
63
+    jobject  aJFile = NULL;
64
+    if(aType == "sdcard") {
65
+        aJFile = theJEnv->CallStaticObjectMethod(aJClass_Env, aJMet_getSdCard);
66
+    } else {
67
+        jstring aJStr_Type = theJEnv->NewStringUTF(theType);
68
+        aJFile = theJEnv->CallStaticObjectMethod(aJClass_Env, aJMet_getStorage, aJStr_Type);
69
+        theJEnv->DeleteLocalRef(aJStr_Type);
70
+    }
71
+    if(aJFile == NULL) {
72
+        return StString();
73
+    }
74
+    return stStringFromJava(theJEnv, (jstring )theJEnv->CallObjectMethod(aJFile, aJMet_getPath));
75
+}
76
+
77
 StAndroidGlue::StAndroidGlue(ANativeActivity* theActivity,
78
                              void*            theSavedState,
79
                              size_t           theSavedStateSize)
80
@@ -92,6 +131,9 @@
81
         myMemoryClassMiB = aJniEnv->CallIntMethod(aJActivityMgr, aJMet_getMemoryClass);
82
     }
83
 
84
+    jmethodID aJMet_getStAppClass = aJniEnv->GetMethodID(aJClass_Activity, "getStAppClass", "()Ljava/lang/String;");
85
+    myStAppClass = stStringFromJava(aJniEnv, (jstring )aJniEnv->CallObjectMethod(myActivity->clazz, aJMet_getStAppClass));
86
+
87
     readOpenPath();
88
 
89
     myCmdPollSource.id        = LooperId_MAIN;
90
@@ -150,17 +192,10 @@
91
     jmethodID   aJMet_getFlags      = aJniEnv->GetMethodID(aJClassIntent, "getFlags",      "()I");
92
 
93
     // retrieve data path
94
-    jstring     aJString      = (jstring )aJniEnv->CallObjectMethod(aJIntent, aJMet_getDataString);
95
-    const char* aJStringStr   = aJniEnv->GetStringUTFChars(aJString, 0);
96
-    StString aDataPath = aJStringStr;
97
-    aJniEnv->ReleaseStringUTFChars(aJString, aJStringStr);
98
-
99
+    StString aDataPath = stStringFromJava(aJniEnv, (jstring )aJniEnv->CallObjectMethod(aJIntent, aJMet_getDataString));
100
     // retrieve data type
101
-    int aFlags    = aJniEnv->CallIntMethod(aJIntent, aJMet_getFlags);
102
-    aJString      = (jstring )aJniEnv->CallObjectMethod(aJIntent, aJMet_getType);
103
-    aJStringStr   = aJniEnv->GetStringUTFChars(aJString, 0);
104
-    const StString aDataType = aJStringStr;
105
-    aJniEnv->ReleaseStringUTFChars(aJString, aJStringStr);
106
+    int aFlags = aJniEnv->CallIntMethod(aJIntent, aJMet_getFlags);
107
+    const StString aDataType = stStringFromJava(aJniEnv, (jstring )aJniEnv->CallObjectMethod(aJIntent, aJMet_getType));
108
 
109
     // reset intent in Activity
110
     aJniEnv->CallVoidMethod(myActivity->clazz, aJMet_setIntent, NULL);
111
sview-15_10.tar.gz/StCore/StApplication.cpp -> sview-15_11.tar.gz/StCore/StApplication.cpp Changed
51
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include <StCore/StApplication.h>
25
@@ -330,9 +321,25 @@
26
     //return myActions.at(theActionId);
27
 }
28
 
29
+int StApplication::getActionIdFromName(const StString& theActionName) const {
30
+    StString aNameLower = theActionName;
31
+    aNameLower.toLowerCase();
32
+    const std::string aName(aNameLower.toCString());
33
+    std::map< std::string, int >::const_iterator anAction = myActionLookup.find(aName);
34
+    return anAction != myActionLookup.end()
35
+         ? anAction->second
36
+         : -1;
37
+}
38
+
39
 void StApplication::addAction(const int                 theActionId,
40
                               const StHandle<StAction>& theAction) {
41
     myActions[theActionId] = theAction;
42
+    if(!theAction.isNull()) {
43
+        StString aNameLower = theAction->getName();
44
+        aNameLower.toLowerCase();
45
+        const std::string aName(aNameLower.toCString());
46
+        myActionLookup[aName] = theActionId;
47
+    }
48
 }
49
 
50
 void StApplication::addAction(const int           theActionId,
51
sview-15_10.tar.gz/StCore/StCocoaView.h -> sview-15_11.tar.gz/StCore/StCocoaView.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StCore/StCocoaView.mm -> sview-15_11.tar.gz/StCore/StCocoaView.mm Changed
63
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
@@ -27,6 +18,8 @@
26
 
27
 #include <StCocoa/StCocoaString.h>
28
 
29
+#include <vector>
30
+
31
 #if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7)
32
 @interface NSOpenGLView (LionAPI)
33
     - (void )setWantsBestResolutionOpenGLSurface: (BOOL )theFlag;
34
@@ -497,6 +490,7 @@
35
                 return NO;
36
             }
37
 
38
+            std::vector<StString> aPaths;
39
             for(NSUInteger aFileId = 0; aFileId < [aFiles count]; ++aFileId) {
40
                 NSString* aFilePathNs = (NSString* )[aFiles objectAtIndex: aFileId];
41
                 if(aFilePathNs == NULL
42
@@ -506,9 +500,18 @@
43
 
44
                 // automatically convert filenames from decomposed form used by Mac OS X file systems
45
                 const StString aFile = [[aFilePathNs precomposedStringWithCanonicalMapping] UTF8String];
46
+                aPaths.push_back(aFile);
47
+            }
48
+
49
+            std::vector<const char*> aDndList;
50
+            for(std::vector<StString>::const_iterator aFileIter = aPaths.begin(); aFileIter != aPaths.end(); ++aFileIter) {
51
+                aDndList.push_back(aFileIter->toCString());
52
+            }
53
+            if(!aDndList.empty()) {
54
                 myStEvent.Type = stEvent_FileDrop;
55
-                myStEvent.DNDrop.Time = myStWin->getEventTime();
56
-                myStEvent.DNDrop.File = aFile.toCString();
57
+                myStEvent.DNDrop.Time    = myStWin->getEventTime();
58
+                myStEvent.DNDrop.NbFiles = aDndList.size();
59
+                myStEvent.DNDrop.Files   = &aDndList[0];
60
                 if(myStWin->myEventsThreaded) {
61
                     myStWin->myEventsBuffer.append(myStEvent);
62
                 } else {
63
sview-15_10.tar.gz/StCore/StCocoaWin.h -> sview-15_11.tar.gz/StCore/StCocoaWin.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StCore/StCocoaWin.mm -> sview-15_11.tar.gz/StCore/StCocoaWin.mm Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StCore/StCore.cbp -> sview-15_11.tar.gz/StCore/StCore.cbp Changed
111
 
1
@@ -6,34 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StCore" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-D_WIN32_WINNT=0x0502" />
21
-                   <Add option="-DST_DEBUG" />
22
-                   <Add option="-DST_HAVE_STCONFIG" />
23
-               </Compiler>
24
-               <Linker>
25
-                   <Add library="opengl32" />
26
-                   <Add library="gdi32" />
27
-                   <Add library="Comdlg32" />
28
-                   <Add library="Winmm" />
29
-                   <Add library="Version" />
30
-                   <Add library="nvapi" />
31
-               </Linker>
32
-           </Target>
33
            <Target title="WIN_vc_x86">
34
                <Option output="../bin/$(TARGET_NAME)/StCore" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
35
                <Option object_output="obj/$(TARGET_NAME)/" />
36
@@ -66,11 +38,11 @@
37
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
38
                </ExtraCommands>
39
            </Target>
40
-           <Target title="WIN_vc_x86_DEBUG">
41
+           <Target title="WIN_vc_AMD64_DEBUG">
42
                <Option output="../bin/$(TARGET_NAME)/StCore" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
43
                <Option object_output="obj/$(TARGET_NAME)/" />
44
                <Option type="3" />
45
-               <Option compiler="msvc10" />
46
+               <Option compiler="windows_sdk_x86_64" />
47
                <Option createStaticLib="1" />
48
                <Compiler>
49
                    <Add option="/MDd" />
50
@@ -262,9 +234,8 @@
51
            <Add directory="../bin/$(TARGET_NAME)" />
52
        </Linker>
53
        <Unit filename="StADLsdk.cpp">
54
-           <Option target="WIN_gcc_x86" />
55
            <Option target="WIN_vc_x86" />
56
-           <Option target="WIN_vc_x86_DEBUG" />
57
+           <Option target="WIN_vc_AMD64_DEBUG" />
58
            <Option target="WIN_vc_AMD64" />
59
            <Option target="LINUX_gcc" />
60
            <Option target="LINUX_gcc_DEBUG" />
61
@@ -299,8 +270,7 @@
62
            <Option compilerVar="WINDRES" />
63
            <Option target="WIN_vc_x86" />
64
            <Option target="WIN_vc_AMD64" />
65
-           <Option target="WIN_gcc_x86" />
66
-           <Option target="WIN_vc_x86_DEBUG" />
67
+           <Option target="WIN_vc_AMD64_DEBUG" />
68
        </Unit>
69
        <Unit filename="StEventsBuffer.h" />
70
        <Unit filename="StKeysState.cpp" />
71
@@ -318,9 +288,8 @@
72
            <Option target="MAC_gcc_DEBUG" />
73
        </Unit>
74
        <Unit filename="StWinHandles.cpp">
75
-           <Option target="WIN_gcc_x86" />
76
            <Option target="WIN_vc_x86" />
77
-           <Option target="WIN_vc_x86_DEBUG" />
78
+           <Option target="WIN_vc_AMD64_DEBUG" />
79
            <Option target="WIN_vc_AMD64" />
80
            <Option target="LINUX_gcc" />
81
            <Option target="LINUX_gcc_DEBUG" />
82
@@ -344,9 +313,8 @@
83
            <Option target="MAC_gcc_DEBUG" />
84
        </Unit>
85
        <Unit filename="StWindowImplWin.cpp">
86
-           <Option target="WIN_gcc_x86" />
87
            <Option target="WIN_vc_x86" />
88
-           <Option target="WIN_vc_x86_DEBUG" />
89
+           <Option target="WIN_vc_AMD64_DEBUG" />
90
            <Option target="WIN_vc_AMD64" />
91
        </Unit>
92
        <Unit filename="StXDisplay.cpp">
93
@@ -354,6 +322,7 @@
94
            <Option target="LINUX_gcc_DEBUG" />
95
        </Unit>
96
        <Unit filename="StXDisplay.h" />
97
+       <Unit filename="stvkeysandroid.h" />
98
        <Unit filename="stvkeyscarbon.h">
99
            <Option target="MAC_gcc" />
100
            <Option target="MAC_gcc_DEBUG" />
101
@@ -361,6 +330,9 @@
102
        <Unit filename="stvkeysxarray.h" />
103
        <Unit filename="zerosarray256.h" />
104
        <Unit filename="zerosarray4096.h" />
105
+       <Unit filename="../include/StCore/StAndroidGlue.h">
106
+           <Option target="&lt;{~None~}&gt;" />
107
+       </Unit>
108
        <Unit filename="../include/StCore/StApplication.h">
109
            <Option target="&lt;{~None~}&gt;" />
110
        </Unit>
111
sview-15_10.tar.gz/StCore/StEventsBuffer.h -> sview-15_11.tar.gz/StCore/StEventsBuffer.h Changed
79
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StEventsBuffer_h_
25
@@ -104,12 +95,32 @@
26
         StEvent& anEvent = myEventsWrite[mySizeWrite++];
27
         anEvent = theEvent;
28
         if(theEvent.Type == stEvent_FileDrop) {
29
-            // copy buffer
30
-            const size_t aSize = std::strlen(theEvent.DNDrop.File);
31
-            char* aBuffer = new char[aSize + 1];
32
-            stMemCpy(aBuffer, theEvent.DNDrop.File, aSize);
33
-            aBuffer[aSize] = '\0';
34
-            anEvent.DNDrop.File = aBuffer;
35
+            if(theEvent.DNDrop.NbFiles == 0) {
36
+                anEvent.DNDrop.Files = NULL;
37
+                return;
38
+            }
39
+
40
+            // make a copy in C-style
41
+            anEvent.DNDrop.Files = stMemAlloc<const char**>(sizeof(const char* ) * theEvent.DNDrop.NbFiles);
42
+            if(anEvent.DNDrop.Files == NULL) {
43
+                anEvent.DNDrop.NbFiles = 0;
44
+                return;
45
+            }
46
+
47
+            stMemZero(anEvent.DNDrop.Files, sizeof(const char* ) * theEvent.DNDrop.NbFiles);
48
+            for(uint32_t aFileIter = 0; aFileIter < theEvent.DNDrop.NbFiles; ++aFileIter) {
49
+                const char*  aBufferSrc = theEvent.DNDrop.Files[aFileIter];
50
+                const size_t aSize      = std::strlen(aBufferSrc);
51
+                char*        aBufferDst = stMemAlloc<char*>(sizeof(char) * aSize + 1);
52
+                if(aBufferDst == NULL) {
53
+                    anEvent.DNDrop.NbFiles = aFileIter;
54
+                    return;
55
+                }
56
+
57
+                stMemCpy(aBufferDst, aBufferSrc, aSize);
58
+                aBufferDst[aSize] = '\0';
59
+                anEvent.DNDrop.Files[aFileIter] = aBufferDst;
60
+            }
61
         }
62
     }
63
 
64
@@ -121,8 +132,12 @@
65
         for(size_t anIter = 0; anIter < mySizeRead; ++anIter) {
66
             StEvent& anEvent = myEventsRead[anIter];
67
             if(anEvent.Type == stEvent_FileDrop) {
68
-                delete[] anEvent.DNDrop.File;
69
-                anEvent.DNDrop.File = NULL;
70
+                for(uint32_t aFileIter = 0; aFileIter < anEvent.DNDrop.NbFiles; ++aFileIter) {
71
+                    stMemFree((void* )anEvent.DNDrop.Files[aFileIter]);
72
+                }
73
+                stMemFree(anEvent.DNDrop.Files);
74
+                anEvent.DNDrop.Files   = NULL;
75
+                anEvent.DNDrop.NbFiles = 0;
76
             }
77
         }
78
 
79
sview-15_10.tar.gz/StCore/StKeysState.cpp -> sview-15_11.tar.gz/StCore/StKeysState.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include <StCore/StKeysState.h>
25
sview-15_10.tar.gz/StCore/StSearchMonitors.ObjC.mm -> sview-15_11.tar.gz/StCore/StSearchMonitors.ObjC.mm Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include <StCore/StSearchMonitors.h>
25
sview-15_10.tar.gz/StCore/StSearchMonitors.cpp -> sview-15_11.tar.gz/StCore/StSearchMonitors.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include <StCore/StSearchMonitors.h>
25
sview-15_10.tar.gz/StCore/StWinHandles.ObjC.mm -> sview-15_11.tar.gz/StCore/StWinHandles.ObjC.mm Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StWinHandles.h"
25
sview-15_10.tar.gz/StCore/StWinHandles.cpp -> sview-15_11.tar.gz/StCore/StWinHandles.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __APPLE__
25
sview-15_10.tar.gz/StCore/StWinHandles.h -> sview-15_11.tar.gz/StCore/StWinHandles.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StWinHandles_h_
25
sview-15_10.tar.gz/StCore/StWindow.cpp -> sview-15_11.tar.gz/StCore/StWindow.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include <StGLCore/StGLCore11Fwd.h>
25
sview-15_10.tar.gz/StCore/StWindowImpl.cpp -> sview-15_11.tar.gz/StCore/StWindowImpl.cpp Changed
123
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StWindowImpl.h"
25
@@ -410,19 +401,39 @@
26
             case StWinAttr_SplitCfg:
27
                 if(attribs.Split != (StWinSplit )anIter[1]
28
                 && attribs.IsFullScreen) {
29
-                    if(attribs.Split == StWinSlave_splitHorizontal) {
30
-                        myRectFull.right() += myRectFull.width();
31
-                    } else if(attribs.Split == StWinSlave_splitVertical) {
32
-                        myRectFull.bottom() += myRectFull.height();
33
+                    switch(attribs.Split) {
34
+                        case StWinSlave_splitHorizontal:   myRectFull.right()  += myRectFull.width();  break;
35
+                        case StWinSlave_splitVertical:     myRectFull.bottom() += myRectFull.height(); break;
36
+                        case StWinSlave_splitVertHdmi720:  myRectFull.bottom() += 720  + 30; break;
37
+                        case StWinSlave_splitVertHdmi1080: myRectFull.bottom() += 1080 + 45; break;
38
+                        default: break;
39
                     }
40
-                    if((StWinSplit )anIter[1] == StWinSlave_splitHorizontal) {
41
-                        myTiledCfg = TiledCfg_MasterSlaveX;
42
-                        myRectFull.right() -= myRectFull.width() / 2;
43
-                    } else if((StWinSplit )anIter[1] == StWinSlave_splitVertical) {
44
-                        myTiledCfg = TiledCfg_MasterSlaveY;
45
-                        myRectFull.bottom() -= myRectFull.height() / 2;
46
-                    } else {
47
-                        myTiledCfg = TiledCfg_Separate;
48
+
49
+                    switch((StWinSplit )anIter[1]) {
50
+                        case StWinSlave_splitHorizontal: {
51
+                            myTiledCfg = TiledCfg_MasterSlaveX;
52
+                            myRectFull.right() -= myRectFull.width() / 2;
53
+                            break;
54
+                        }
55
+                        case StWinSlave_splitVertical: {
56
+                            myTiledCfg = TiledCfg_MasterSlaveY;
57
+                            myRectFull.bottom() -= myRectFull.height() / 2;
58
+                            break;
59
+                        }
60
+                        case StWinSlave_splitVertHdmi720: {
61
+                            myTiledCfg = TiledCfg_VertHdmi720;
62
+                            myRectFull.bottom() -= (720 + 30);
63
+                            break;
64
+                        }
65
+                        case StWinSlave_splitVertHdmi1080: {
66
+                            myTiledCfg = TiledCfg_VertHdmi1080;
67
+                            myRectFull.bottom() -= (1080 + 45);
68
+                            break;
69
+                        }
70
+                        default: {
71
+                            myTiledCfg = TiledCfg_Separate;
72
+                            break;
73
+                        }
74
                     }
75
                     myStEventAux.Type       = stEvent_Size;
76
                     myStEventAux.Size.Time  = getEventTime();
77
@@ -832,6 +843,11 @@
78
             theRect.top()    -= theRect.height();
79
             return;
80
         }
81
+        case TiledCfg_VertHdmi720:
82
+        case TiledCfg_VertHdmi1080: {
83
+            // should not be used in this context
84
+            return;
85
+        }
86
         case TiledCfg_Separate:
87
         default: {
88
             return;
89
@@ -852,6 +868,8 @@
90
         }
91
         case TiledCfg_MasterSlaveX:
92
         case TiledCfg_MasterSlaveY:
93
+        case TiledCfg_VertHdmi720:
94
+        case TiledCfg_VertHdmi1080:
95
         case TiledCfg_Separate:
96
         default: {
97
             return;
98
@@ -892,6 +910,24 @@
99
             convertRectToBacking(aRect, ST_WIN_MASTER);
100
             return aRect;
101
         }
102
+        case TiledCfg_VertHdmi720: {
103
+            if(theWinId == ST_WIN_MASTER) {
104
+                aRect.y()      += 720 + 30;
105
+            } else if(theWinId == ST_WIN_ALL) {
106
+                aRect.height() += 720 + 30;
107
+            }
108
+            convertRectToBacking(aRect, ST_WIN_MASTER);
109
+            return aRect;
110
+        }
111
+        case TiledCfg_VertHdmi1080: {
112
+            if(theWinId == ST_WIN_MASTER) {
113
+                aRect.y()      += 1080 + 45;
114
+            } else if(theWinId == ST_WIN_ALL) {
115
+                aRect.height() += 1080 + 45;
116
+            }
117
+            convertRectToBacking(aRect, ST_WIN_MASTER);
118
+            return aRect;
119
+        }
120
         case TiledCfg_SlaveMasterY: {
121
             if(theWinId == ST_WIN_SLAVE) {
122
                 aRect.y() += aHeight;
123
sview-15_10.tar.gz/StCore/StWindowImpl.h -> sview-15_11.tar.gz/StCore/StWindowImpl.h Changed
34
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StWindowImpl_h_
25
@@ -167,6 +158,8 @@
26
         TiledCfg_SlaveMasterX, //!< Master at right  / Slave at left
27
         TiledCfg_MasterSlaveY, //!< Master at top    / Slave at bottom
28
         TiledCfg_SlaveMasterY, //!< Master at bottom / Slave at top
29
+        TiledCfg_VertHdmi720,
30
+        TiledCfg_VertHdmi1080,
31
     };
32
 
33
     ST_LOCAL void getTiledWinRect(StRectI_t& theRect) const;
34
sview-15_10.tar.gz/StCore/StWindowImplAnd.cpp -> sview-15_11.tar.gz/StCore/StWindowImplAnd.cpp Changed
87
 
1
@@ -1,30 +1,23 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2014-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if defined(__ANDROID__)
25
 
26
 #include "StWindowImpl.h"
27
+#include "stvkeysandroid.h" // Android NDK keys to VKEYs lookup array
28
 
29
 #include <StCore/StAndroidGlue.h>
30
 #include <StStrings/StLogger.h>
31
 #include <StGL/StGLContext.h>
32
 
33
 #include <cmath>
34
+#include <vector>
35
 
36
 void StWindowImpl::convertRectToBacking(StGLBoxPx& ,
37
                                         const int  ) const {
38
@@ -147,6 +140,25 @@
39
     const int anEventType = AInputEvent_getType(theEvent);
40
     switch(anEventType) {
41
         case AINPUT_EVENT_TYPE_KEY: {
42
+            StVirtKey aVKeySt = ST_VK_NULL;
43
+            int32_t   aKeySym = AKeyEvent_getKeyCode(theEvent);
44
+            if(aKeySym < ST_ANDROID2ST_VK_SIZE) {
45
+                aVKeySt = (StVirtKey )ST_ANDROID2ST_VK[aKeySym];
46
+            }
47
+            if(aVKeySt == ST_VK_NULL) {
48
+                return;
49
+            }
50
+
51
+            myStEvent.Key.Time = getEventTime(); //AKeyEvent_getEventTime(theEvent);
52
+            myStEvent.Key.VKey = aVKeySt;
53
+            myStEvent.Key.Char = 0;
54
+
55
+            const int32_t aKeyAction = AKeyEvent_getAction(theEvent);
56
+            if(aKeyAction == AKEY_EVENT_ACTION_DOWN) {
57
+                postKeyDown(myStEvent);
58
+            } else if(aKeyAction == AKEY_EVENT_ACTION_UP) {
59
+                postKeyUp(myStEvent);
60
+            }// else if(aKeyAction == AKEY_EVENT_ACTION_MULTIPLE) {}
61
             return;
62
         }
63
         case AINPUT_EVENT_TYPE_MOTION: {
64
@@ -327,7 +339,7 @@
65
             return;
66
         }
67
         case StAndroidGlue::CommandId_FocusLost: {
68
-            //
69
+            myKeysState.reset();
70
             return;
71
         }
72
         case StAndroidGlue::CommandId_ConfigChanged: {
73
@@ -365,9 +377,12 @@
74
     myParentWin->setTrackOrientation(myToTrackOrient);
75
     myParentWin->fetchState(aDndFile, myQuaternion);
76
     if(!aDndFile.isEmpty()) {
77
+        std::vector<const char*> aDndList;
78
+        aDndList.push_back(aDndFile.toCString());
79
         myStEvent.Type = stEvent_FileDrop;
80
         myStEvent.DNDrop.Time = getEventTime();
81
-        myStEvent.DNDrop.File = aDndFile.toCString();
82
+        myStEvent.DNDrop.NbFiles = aDndList.size();
83
+        myStEvent.DNDrop.Files   = &aDndList[0];
84
         myEventsBuffer.append(myStEvent);
85
     }
86
 
87
sview-15_10.tar.gz/StCore/StWindowImplLin.cpp -> sview-15_11.tar.gz/StCore/StWindowImplLin.cpp Changed
131
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if defined(__linux__) && !defined(__ANDROID__)
25
@@ -29,6 +20,7 @@
26
 #include <X11/xpm.h>
27
 
28
 #include <cmath>
29
+#include <vector>
30
 
31
 #include "../share/sView/icons/menu.xpm"
32
 
33
@@ -622,7 +614,10 @@
34
             Property aProperty = aDisplay->readProperty(aSrcWin, aDisplay->xDNDTypeList);
35
             Atom* anAtomList = (Atom* )aProperty.data;
36
             for(int anIter = 0; anIter < aProperty.nitems; ++anIter) {
37
-                if(anAtomList[anIter] == aDisplay->xDNDPlainText) {
38
+                if(anAtomList[anIter] == aDisplay->xDNDUriList) {
39
+                    myMaster.xDNDRequestType = aDisplay->xDNDUriList;
40
+                    break;
41
+                } else if(anAtomList[anIter] == aDisplay->xDNDPlainText) {
42
                     myMaster.xDNDRequestType = aDisplay->xDNDPlainText;
43
                     break;
44
                 }
45
@@ -678,13 +673,6 @@
46
     const StXDisplayH& aDisplay = myMaster.stXDisplay;
47
     // myMaster.hWindow or myMaster.hWindowGl
48
     Window aWinReciever = ((XClientMessageEvent* )&myXEvent)->window;
49
-    /*ST_DEBUG_LOG(
50
-        "A selection notify has arrived!\n"
51
-        + "Requestor = 0x" + (int )myXEvent.xselectionrequest.requestor + "\n"
52
-        + "Selection atom = " + myMaster.getAtomName(myXEvent.xselection.selection) + "\n"
53
-        + "Target atom    = " + myMaster.getAtomName(aTarget) + "\n"
54
-        + "Property atom  = " + myMaster.getAtomName(myXEvent.xselection.property) + "\n"
55
-    );*/
56
     if(myXEvent.xselection.property == None) {
57
         return;
58
     } else {
59
@@ -694,32 +682,50 @@
60
         if(aTarget == aDisplay->XA_TARGETS) {
61
             XConvertSelection(aDisplay->hDisplay, aSelection, XA_STRING, aSelection, aWinReciever, CurrentTime);
62
         } else if(aTarget == myMaster.xDNDRequestType) {
63
-            StString aData = StString((char* )aProperty.data);
64
+            std::vector<StString> aPaths;
65
+            const char* aCharFrom      = (const char* )aProperty.data;
66
+            size_t      aCharFromIndex = 0;
67
+            for(StUtf8Iter aCharIter(aCharFrom);; ++aCharIter) {
68
+                // cut filenames separated with CR/LF
69
+                if(*aCharIter == 0
70
+                || *aCharIter == stUtf32_t('\n')
71
+                || *aCharIter == stUtf32_t(13)) {
72
+                    size_t aLen = aCharIter.getIndex() - aCharFromIndex;
73
+                    if(stAreEqual(aCharFrom, "file://", 7)) {
74
+                        aCharFrom += 7;
75
+                        aLen      -= 7;
76
+                    }
77
 
78
-            size_t anEndChar = aData.getLength();
79
-            for(StUtf8Iter anIter = aData.iterator(); *anIter != 0; ++anIter) {
80
-                // cut only first filename, separated with CR/LF
81
-                if(*anIter == stUtf32_t('\n') || *anIter == stUtf32_t(13)) {
82
-                    anEndChar = anIter.getIndex();
83
-                    break;
84
+                    StString aData(aCharFrom, aLen);
85
+                    StString aFile;
86
+                    if(myMaster.xDNDRequestType != XA_STRING) {
87
+                        aFile.fromUrl(aData);
88
+                    } else {
89
+                        aFile = aData;
90
+                    }
91
+                    if(!aFile.isEmpty()) {
92
+                        aPaths.push_back(aFile);
93
+                    }
94
+
95
+                    aCharFromIndex = aCharIter.getIndex() + 1;
96
+                    aCharFrom      = aCharIter.getBufferHere() + 1;
97
+                    if(*aCharIter == 0) {
98
+                        break;
99
+                    }
100
                 }
101
             }
102
 
103
-            const StString ST_FILE_PROTOCOL("file://");
104
-            size_t aCutFrom = aData.isStartsWith(ST_FILE_PROTOCOL) ? ST_FILE_PROTOCOL.getLength() : 0;
105
-            aData = aData.subString(aCutFrom, anEndChar);
106
-            StString aFile;
107
-            if(myMaster.xDNDRequestType != XA_STRING) {
108
-                aFile.fromUrl(aData);
109
-            } else {
110
-                aFile = aData;
111
+            std::vector<const char*> aDndList;
112
+            for(std::vector<StString>::const_iterator aFileIter = aPaths.begin(); aFileIter != aPaths.end(); ++aFileIter) {
113
+                aDndList.push_back(aFileIter->toCString());
114
+            }
115
+            if(!aDndList.empty()) {
116
+                myStEvent.Type = stEvent_FileDrop;
117
+                myStEvent.DNDrop.Time = getEventTime(myXEvent.xselection.time);
118
+                myStEvent.DNDrop.NbFiles = aDndList.size();
119
+                myStEvent.DNDrop.Files   = &aDndList[0];
120
+                signals.onFileDrop->emit(myStEvent.DNDrop);
121
             }
122
-            myStEvent.Type = stEvent_FileDrop;
123
-            myStEvent.DNDrop.Time = getEventTime(myXEvent.xselection.time);
124
-            myStEvent.DNDrop.File = aFile.toCString();
125
-            signals.onFileDrop->emit(myStEvent.DNDrop);
126
-
127
-            //ST_DEBUG_LOG(data);
128
 
129
             // Reply OK
130
             XClientMessageEvent aMsg;
131
sview-15_10.tar.gz/StCore/StWindowImplMac.mm -> sview-15_11.tar.gz/StCore/StWindowImplMac.mm Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StCore/StWindowImplWin.cpp -> sview-15_11.tar.gz/StCore/StWindowImplWin.cpp Changed
66
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifdef _WIN32
25
@@ -26,6 +17,7 @@
26
 #include <StGL/StGLContext.h>
27
 
28
 #include <cmath>
29
+#include <vector>
30
 
31
 static SV_THREAD_FUNCTION threadCreateWindows(void* inStWin);
32
 
33
@@ -492,16 +484,26 @@
34
                 break;
35
             }
36
 
37
+            // convert to UTF-8
38
+            std::vector<StString> aPaths;
39
             for(UINT aFileId = 0; aFileId < aFilesCount; ++aFileId) {
40
                 if(DragQueryFileW(aDrops, aFileId, aFileBuff, MAX_PATH) > 0) {
41
-                    const StString aFile(aFileBuff);
42
-                    myStEvent.Type = stEvent_FileDrop;
43
-                    myStEvent.DNDrop.Time = getEventTime(myEvent.time);
44
-                    myStEvent.DNDrop.File = aFile.toCString();
45
-                    myEventsBuffer.append(myStEvent);
46
+                    aPaths.push_back(StString(aFileBuff));
47
                 }
48
             }
49
-            DragFinish(aDrops); // do not forget
50
+            DragFinish(aDrops);
51
+
52
+            std::vector<const char*> aDndList;
53
+            for(std::vector<StString>::const_iterator aFileIter = aPaths.begin(); aFileIter != aPaths.end(); ++aFileIter) {
54
+                aDndList.push_back(aFileIter->toCString());
55
+            }
56
+            if(!aDndList.empty()) {
57
+                myStEvent.Type = stEvent_FileDrop;
58
+                myStEvent.DNDrop.Time    = getEventTime(myEvent.time);
59
+                myStEvent.DNDrop.NbFiles = (uint32_t )aDndList.size();
60
+                myStEvent.DNDrop.Files   = &aDndList[0];
61
+                myEventsBuffer.append(myStEvent);
62
+            }
63
             break;
64
         }
65
         case WM_MOVE: {
66
sview-15_10.tar.gz/StCore/StXDisplay.cpp -> sview-15_11.tar.gz/StCore/StXDisplay.cpp Changed
42
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
5
+ * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StCore library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StCore library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #if defined(__linux__) && !defined(__ANDROID__)
26
@@ -39,6 +30,7 @@
27
   xDNDSelection(None),
28
   xDNDProxy(None),
29
   xDNDAware(None),
30
+  xDNDUriList(None),
31
   xDNDPlainText(None),
32
   xDNDPrimary(None),
33
   XA_TARGETS(None),
34
@@ -122,6 +114,7 @@
35
     xDNDSelection  = XInternAtom(hDisplay, "XdndSelection",    False);
36
     xDNDProxy      = XInternAtom(hDisplay, "XdndProxy",        False);
37
     xDNDAware      = XInternAtom(hDisplay, "XdndAware",        False);
38
+    xDNDUriList    = XInternAtom(hDisplay, "text/uri-list",    False);
39
     xDNDPlainText  = XInternAtom(hDisplay, "text/plain",       False);
40
     xDNDPrimary    = XInternAtom(hDisplay, "PRIMARY",          False);
41
     // This is a meta-format for data to be "pasted" in to.
42
sview-15_10.tar.gz/StCore/StXDisplay.h -> sview-15_11.tar.gz/StCore/StXDisplay.h Changed
34
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
5
+ * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StCore library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StCore library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #ifndef __StXDisplay_h_
26
@@ -61,6 +52,7 @@
27
     Atom         xDNDSelection;
28
     Atom         xDNDProxy;
29
     Atom         xDNDAware;
30
+    Atom         xDNDUriList;
31
     Atom         xDNDPlainText;
32
     Atom         xDNDPrimary;
33
 
34
sview-15_11.tar.gz/StCore/stvkeysandroid.h Added
284
 
1
@@ -0,0 +1,282 @@
2
+/**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
+ * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * See accompanying file license-boost.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt
9
+ */
10
+
11
+#if (defined(__ANDROID__))
12
+
13
+#ifndef __stVKEYS_ANDROID_H_
14
+#define __stVKEYS_ANDROID_H_
15
+
16
+#include <StCore/StVirtualKeys.h>
17
+
18
+/**
19
+ * This is lookup array to convert Android NDK key codes to ST_VKEY codes.
20
+ * Notice, this array useless for text input!
21
+ */
22
+#define ST_ANDROID2ST_VK_SIZE 256
23
+static const unsigned int ST_ANDROID2ST_VK[ST_ANDROID2ST_VK_SIZE] = {
24
+    0,            // AKEYCODE_UNKNOWN         = 0,
25
+    0,            // AKEYCODE_SOFT_LEFT       = 1,
26
+    0,            // AKEYCODE_SOFT_RIGHT      = 2,
27
+    0,            // AKEYCODE_HOME            = 3,
28
+    0,            // AKEYCODE_BACK            = 4,
29
+    0,            // AKEYCODE_CALL            = 5,
30
+    0,            // AKEYCODE_ENDCALL         = 6,
31
+    ST_VK_0,      // AKEYCODE_0               = 7,
32
+    ST_VK_1,      // AKEYCODE_1               = 8,
33
+    ST_VK_2,      // AKEYCODE_2               = 9,
34
+    ST_VK_3,      // AKEYCODE_3               = 10,
35
+    ST_VK_4,      // AKEYCODE_4               = 11,
36
+    ST_VK_5,      // AKEYCODE_5               = 12,
37
+    ST_VK_6,      // AKEYCODE_6               = 13,
38
+    ST_VK_7,      // AKEYCODE_7               = 14,
39
+    ST_VK_8,      // AKEYCODE_8               = 15,
40
+    ST_VK_9,      // AKEYCODE_9               = 16,
41
+    0,            // AKEYCODE_STAR            = 17,
42
+    0,            // AKEYCODE_POUND           = 18,
43
+    ST_VK_UP,     // AKEYCODE_DPAD_UP         = 19,
44
+    ST_VK_DOWN,   // AKEYCODE_DPAD_DOWN       = 20,
45
+    ST_VK_LEFT,   // AKEYCODE_DPAD_LEFT       = 21,
46
+    ST_VK_RIGHT,  // AKEYCODE_DPAD_RIGHT      = 22,
47
+    0,            // AKEYCODE_DPAD_CENTER     = 23,
48
+    ST_VK_VOLUME_UP,   // AKEYCODE_VOLUME_UP       = 24,
49
+    ST_VK_VOLUME_DOWN, // AKEYCODE_VOLUME_DOWN     = 25,
50
+    0,            // AKEYCODE_POWER           = 26,
51
+    0,            // AKEYCODE_CAMERA          = 27,
52
+    0,            // AKEYCODE_CLEAR           = 28,
53
+    ST_VK_A,      // AKEYCODE_A               = 29,
54
+    ST_VK_B,      // AKEYCODE_B               = 30,
55
+    ST_VK_C,      // AKEYCODE_C               = 31,
56
+    ST_VK_D,      // AKEYCODE_D               = 32,
57
+    ST_VK_E,      // AKEYCODE_E               = 33,
58
+    ST_VK_F,      // AKEYCODE_F               = 34,
59
+    ST_VK_G,      // AKEYCODE_G               = 35,
60
+    ST_VK_H,      // AKEYCODE_H               = 36,
61
+    ST_VK_I,      // AKEYCODE_I               = 37,
62
+    ST_VK_J,      // AKEYCODE_J               = 38,
63
+    ST_VK_K,      // AKEYCODE_K               = 39,
64
+    ST_VK_L,      // AKEYCODE_L               = 40,
65
+    ST_VK_M,      // AKEYCODE_M               = 41,
66
+    ST_VK_N,      // AKEYCODE_N               = 42,
67
+    ST_VK_O,      // AKEYCODE_O               = 43,
68
+    ST_VK_P,      // AKEYCODE_P               = 44,
69
+    ST_VK_Q,      // AKEYCODE_Q               = 45,
70
+    ST_VK_R,      // AKEYCODE_R               = 46,
71
+    ST_VK_S,      // AKEYCODE_S               = 47,
72
+    ST_VK_T,      // AKEYCODE_T               = 48,
73
+    ST_VK_U,      // AKEYCODE_U               = 49,
74
+    ST_VK_V,      // AKEYCODE_V               = 50,
75
+    ST_VK_W,      // AKEYCODE_W               = 51,
76
+    ST_VK_X,      // AKEYCODE_X               = 52,
77
+    ST_VK_Y,      // AKEYCODE_Y               = 53,
78
+    ST_VK_Z,      // AKEYCODE_Z               = 54,
79
+    ST_VK_COMMA,  // AKEYCODE_COMMA           = 55,
80
+    ST_VK_PERIOD, // AKEYCODE_PERIOD          = 56,
81
+    ST_VK_MENU,   // AKEYCODE_ALT_LEFT        = 57,
82
+    ST_VK_MENU,   // AKEYCODE_ALT_RIGHT       = 58,
83
+    ST_VK_SHIFT,  // AKEYCODE_SHIFT_LEFT      = 59,
84
+    ST_VK_SHIFT,  // AKEYCODE_SHIFT_RIGHT     = 60,
85
+    ST_VK_TAB,    // AKEYCODE_TAB             = 61,
86
+    ST_VK_SPACE,  // AKEYCODE_SPACE           = 62,
87
+    0,            // AKEYCODE_SYM             = 63,
88
+    0,            // AKEYCODE_EXPLORER        = 64,
89
+    0,            // AKEYCODE_ENVELOPE        = 65,
90
+    ST_VK_RETURN, // AKEYCODE_ENTER           = 66,
91
+    ST_VK_BACK,   // AKEYCODE_DEL             = 67,
92
+    0,            // AKEYCODE_GRAVE           = 68,
93
+    ST_VK_OEM_MINUS,    // AKEYCODE_MINUS           = 69,
94
+    ST_VK_OEM_PLUS,     // AKEYCODE_EQUALS          = 70,
95
+    ST_VK_BRACKETLEFT,  // AKEYCODE_LEFT_BRACKET    = 71,
96
+    ST_VK_BRACKETRIGHT, // AKEYCODE_RIGHT_BRACKET   = 72,
97
+    ST_VK_BACKSLASH,    // AKEYCODE_BACKSLASH       = 73,
98
+    ST_VK_SEMICOLON,    // AKEYCODE_SEMICOLON       = 74,
99
+    ST_VK_APOSTROPHE,   // AKEYCODE_APOSTROPHE      = 75,
100
+    ST_VK_SLASH,        // AKEYCODE_SLASH           = 76,
101
+    0, // AKEYCODE_AT              = 77,
102
+    0, // AKEYCODE_NUM             = 78,
103
+    0, // AKEYCODE_HEADSETHOOK     = 79,
104
+    0, // AKEYCODE_FOCUS           = 80,   // *Camera* focus
105
+    0, // AKEYCODE_PLUS            = 81,
106
+    0, // AKEYCODE_MENU            = 82,
107
+    0, // AKEYCODE_NOTIFICATION    = 83,
108
+    0, // AKEYCODE_SEARCH          = 84,
109
+    ST_VK_MEDIA_PLAY_PAUSE, // AKEYCODE_MEDIA_PLAY_PAUSE= 85,
110
+    ST_VK_MEDIA_STOP,       // AKEYCODE_MEDIA_STOP      = 86,
111
+    ST_VK_MEDIA_NEXT_TRACK, // AKEYCODE_MEDIA_NEXT      = 87,
112
+    ST_VK_MEDIA_PREV_TRACK, // AKEYCODE_MEDIA_PREVIOUS  = 88,
113
+    0,                      // AKEYCODE_MEDIA_REWIND    = 89,
114
+    0,                      // AKEYCODE_MEDIA_FAST_FORWARD = 90,
115
+    ST_VK_VOLUME_MUTE,      // AKEYCODE_MUTE            = 91,
116
+    ST_VK_PAGE_UP,          // AKEYCODE_PAGE_UP         = 92,
117
+    ST_VK_PAGE_DOWN,        // AKEYCODE_PAGE_DOWN       = 93,
118
+    0, // AKEYCODE_PICTSYMBOLS     = 94,
119
+    0, // AKEYCODE_SWITCH_CHARSET  = 95,
120
+    0, // AKEYCODE_BUTTON_A        = 96,
121
+    0, // AKEYCODE_BUTTON_B        = 97,
122
+    0, // AKEYCODE_BUTTON_C        = 98,
123
+    0, // AKEYCODE_BUTTON_X        = 99,
124
+    0, // AKEYCODE_BUTTON_Y        = 100,
125
+    0, // AKEYCODE_BUTTON_Z        = 101,
126
+    0, // AKEYCODE_BUTTON_L1       = 102,
127
+    0, // AKEYCODE_BUTTON_R1       = 103,
128
+    0, // AKEYCODE_BUTTON_L2       = 104,
129
+    0, // AKEYCODE_BUTTON_R2       = 105,
130
+    0, // AKEYCODE_BUTTON_THUMBL   = 106,
131
+    0, // AKEYCODE_BUTTON_THUMBR   = 107,
132
+    0, // AKEYCODE_BUTTON_START    = 108,
133
+    0, // AKEYCODE_BUTTON_SELECT   = 109,
134
+    0, // AKEYCODE_BUTTON_MODE     = 110,
135
+    ST_VK_ESCAPE,    // AKEYCODE_ESCAPE          = 111,
136
+    ST_VK_DELETE,    // AKEYCODE_FORWARD_DEL     = 112,
137
+    ST_VK_CONTROL,   // AKEYCODE_CTRL_LEFT       = 113,
138
+    ST_VK_CONTROL,   // AKEYCODE_CTRL_RIGHT      = 114,
139
+    ST_VK_CAPITAL,   // AKEYCODE_CAPS_LOCK       = 115,
140
+    ST_VK_SCROLL,    // AKEYCODE_SCROLL_LOCK     = 116,
141
+    0,               // AKEYCODE_META_LEFT       = 117,
142
+    0,               // AKEYCODE_META_RIGHT      = 118,
143
+    0,               // AKEYCODE_FUNCTION        = 119,
144
+    0,               // AKEYCODE_SYSRQ           = 120,
145
+    0,               // AKEYCODE_BREAK           = 121,
146
+    ST_VK_HOME,      // AKEYCODE_MOVE_HOME       = 122,
147
+    ST_VK_END,       // AKEYCODE_MOVE_END        = 123,
148
+    ST_VK_INSERT,    // AKEYCODE_INSERT          = 124,
149
+    0,               // AKEYCODE_FORWARD         = 125,
150
+    ST_VK_MEDIA_PLAY_PAUSE, // AKEYCODE_MEDIA_PLAY      = 126,
151
+    ST_VK_MEDIA_PLAY_PAUSE, // AKEYCODE_MEDIA_PAUSE     = 127,
152
+    0,               // AKEYCODE_MEDIA_CLOSE     = 128,
153
+    0,               // AKEYCODE_MEDIA_EJECT     = 129,
154
+    0,               // AKEYCODE_MEDIA_RECORD    = 130,
155
+    ST_VK_F1,        // AKEYCODE_F1              = 131,
156
+    ST_VK_F2,        // AKEYCODE_F2              = 132,
157
+    ST_VK_F3,        // AKEYCODE_F3              = 133,
158
+    ST_VK_F4,        // AKEYCODE_F4              = 134,
159
+    ST_VK_F5,        // AKEYCODE_F5              = 135,
160
+    ST_VK_F6,        // AKEYCODE_F6              = 136,
161
+    ST_VK_F7,        // AKEYCODE_F7              = 137,
162
+    ST_VK_F8,        // AKEYCODE_F8              = 138,
163
+    ST_VK_F9,        // AKEYCODE_F9              = 139,
164
+    ST_VK_F10,       // AKEYCODE_F10             = 140,
165
+    ST_VK_F11,       // AKEYCODE_F11             = 141,
166
+    ST_VK_F12,       // AKEYCODE_F12             = 142,
167
+    0,               // AKEYCODE_NUM_LOCK        = 143,
168
+    ST_VK_NUMPAD0,   // AKEYCODE_NUMPAD_0        = 144,
169
+    ST_VK_NUMPAD1,   // AKEYCODE_NUMPAD_1        = 145,
170
+    ST_VK_NUMPAD2,   // AKEYCODE_NUMPAD_2        = 146,
171
+    ST_VK_NUMPAD3,   // AKEYCODE_NUMPAD_3        = 147,
172
+    ST_VK_NUMPAD4,   // AKEYCODE_NUMPAD_4        = 148,
173
+    ST_VK_NUMPAD5,   // AKEYCODE_NUMPAD_5        = 149,
174
+    ST_VK_NUMPAD6,   // AKEYCODE_NUMPAD_6        = 150,
175
+    ST_VK_NUMPAD7,   // AKEYCODE_NUMPAD_7        = 151,
176
+    ST_VK_NUMPAD8,   // AKEYCODE_NUMPAD_8        = 152,
177
+    ST_VK_NUMPAD9,   // AKEYCODE_NUMPAD_9        = 153,
178
+    ST_VK_DIVIDE,    // AKEYCODE_NUMPAD_DIVIDE   = 154,
179
+    ST_VK_MULTIPLY,  // AKEYCODE_NUMPAD_MULTIPLY = 155,
180
+    ST_VK_SUBTRACT,  // AKEYCODE_NUMPAD_SUBTRACT = 156,
181
+    ST_VK_ADD,       // AKEYCODE_NUMPAD_ADD      = 157,
182
+    ST_VK_DECIMAL,   // AKEYCODE_NUMPAD_DOT      = 158,
183
+    ST_VK_SEPARATOR, // AKEYCODE_NUMPAD_COMMA    = 159,
184
+    ST_VK_RETURN,    // AKEYCODE_NUMPAD_ENTER    = 160,
185
+    0, // AKEYCODE_NUMPAD_EQUALS   = 161,
186
+    0, // AKEYCODE_NUMPAD_LEFT_PAREN = 162,
187
+    0, // AKEYCODE_NUMPAD_RIGHT_PAREN = 163,
188
+    ST_VK_VOLUME_MUTE, // AKEYCODE_VOLUME_MUTE     = 164,
189
+    0, // AKEYCODE_INFO            = 165,
190
+    0, // AKEYCODE_CHANNEL_UP      = 166,
191
+    0, // AKEYCODE_CHANNEL_DOWN    = 167,
192
+    0, // AKEYCODE_ZOOM_IN         = 168,
193
+    0, // AKEYCODE_ZOOM_OUT        = 169,
194
+    0, // AKEYCODE_TV              = 170,
195
+    0, // AKEYCODE_WINDOW          = 171,
196
+    0, // AKEYCODE_GUIDE           = 172,
197
+    0, // AKEYCODE_DVR             = 173,
198
+    0, // AKEYCODE_BOOKMARK        = 174,
199
+    0, // AKEYCODE_CAPTIONS        = 175,
200
+    0, // AKEYCODE_SETTINGS        = 176,
201
+    0, // AKEYCODE_TV_POWER        = 177,
202
+    0, // AKEYCODE_TV_INPUT        = 178,
203
+    0, // AKEYCODE_STB_POWER       = 179,
204
+    0, // AKEYCODE_STB_INPUT       = 180,
205
+    0, // AKEYCODE_AVR_POWER       = 181,
206
+    0, // AKEYCODE_AVR_INPUT       = 182,
207
+    0, // AKEYCODE_PROG_RED        = 183,
208
+    0, // AKEYCODE_PROG_GREEN      = 184,
209
+    0, // AKEYCODE_PROG_YELLOW     = 185,
210
+    0, // AKEYCODE_PROG_BLUE       = 186,
211
+    0, // AKEYCODE_APP_SWITCH      = 187,
212
+    0, // AKEYCODE_BUTTON_1        = 188,
213
+    0, // AKEYCODE_BUTTON_2        = 189,
214
+    0, // AKEYCODE_BUTTON_3        = 190,
215
+    0, // AKEYCODE_BUTTON_4        = 191,
216
+    0, // AKEYCODE_BUTTON_5        = 192,
217
+    0, // AKEYCODE_BUTTON_6        = 193,
218
+    0, // AKEYCODE_BUTTON_7        = 194,
219
+    0, // AKEYCODE_BUTTON_8        = 195,
220
+    0, // AKEYCODE_BUTTON_9        = 196,
221
+    0, // AKEYCODE_BUTTON_10       = 197,
222
+    0, // AKEYCODE_BUTTON_11       = 198,
223
+    0, // AKEYCODE_BUTTON_12       = 199,
224
+    0, // AKEYCODE_BUTTON_13       = 200,
225
+    0, // AKEYCODE_BUTTON_14       = 201,
226
+    0, // AKEYCODE_BUTTON_15       = 202,
227
+    0, // AKEYCODE_BUTTON_16       = 203,
228
+    0, // AKEYCODE_LANGUAGE_SWITCH = 204,
229
+    0, // AKEYCODE_MANNER_MODE     = 205,
230
+    0, /// AKEYCODE_3D_MODE         = 206,
231
+    0, // AKEYCODE_CONTACTS        = 207,
232
+    0, // AKEYCODE_CALENDAR        = 208,
233
+    0, // AKEYCODE_MUSIC           = 209,
234
+    0, // AKEYCODE_CALCULATOR      = 210,
235
+    0, // 211
236
+    0, // 212
237
+    0, // 213
238
+    0, // 214
239
+    0, // 215
240
+    0, // 216
241
+    0, // 217
242
+    0, // 218
243
+    0, // 219
244
+    0, // 220
245
+    0, // 221
246
+    0, // 222
247
+    0, // 223
248
+    0, // 224
249
+    0, // 225
250
+    0, // 226
251
+    0, // 227
252
+    0, // 228
253
+    0, // 229
254
+    0, // 230
255
+    0, // 231
256
+    0, // 232
257
+    0, // 233
258
+    0, // 234
259
+    0, // 235
260
+    0, // 236
261
+    0, // 237
262
+    0, // 238
263
+    0, // 239
264
+    0, // 240
265
+    0, // 241
266
+    0, // 242
267
+    0, // 243
268
+    0, // 244
269
+    0, // 245
270
+    0, // 246
271
+    0, // 247
272
+    0, // 248
273
+    0, // 249
274
+    0, // 250
275
+    0, // 251
276
+    0, // 252
277
+    0, // 253
278
+    0, // 254
279
+    0  // 255
280
+};
281
+
282
+#endif // __stVKEYS_ANDROID_H_
283
+#endif // __ANDROID__
284
sview-15_10.tar.gz/StCore/stvkeyscarbon.h -> sview-15_11.tar.gz/StCore/stvkeyscarbon.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2011-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StCore/stvkeysxarray.h -> sview-15_11.tar.gz/StCore/stvkeysxarray.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __stVKEYS_XARRAY_H_
25
sview-15_10.tar.gz/StDiagnostics/StDiagnostics.cbp -> sview-15_11.tar.gz/StDiagnostics/StDiagnostics.cbp Changed
63
 
1
@@ -6,36 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStDiagnostics" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Comdlg32" />
27
-                   <Add library="shell32" />
28
-                   <Add library="Wsock32" />
29
-                   <Add library="Version" />
30
-               </Linker>
31
-               <ExtraCommands>
32
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
33
-               </ExtraCommands>
34
-           </Target>
35
            <Target title="WIN_vc_x86">
36
                <Option output="../bin/$(TARGET_NAME)/StDiagnostics" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
37
                <Option object_output="obj/$(TARGET_NAME)/" />
38
@@ -68,11 +38,11 @@
39
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
40
                </ExtraCommands>
41
            </Target>
42
-           <Target title="WIN_vc_x86_DEBUG">
43
+           <Target title="WIN_vc_AMD64_DEBUG">
44
                <Option output="../bin/$(TARGET_NAME)/StDiagnostics" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
45
                <Option object_output="obj/$(TARGET_NAME)/" />
46
                <Option type="3" />
47
-               <Option compiler="msvc10" />
48
+               <Option compiler="windows_sdk_x86_64" />
49
                <Option createStaticLib="1" />
50
                <Compiler>
51
                    <Add option="/MDd" />
52
@@ -273,9 +243,8 @@
53
        <Unit filename="StDiagnostics.h" />
54
        <Unit filename="StDiagnostics.rc">
55
            <Option compilerVar="WINDRES" />
56
-           <Option target="WIN_gcc_x86" />
57
            <Option target="WIN_vc_x86" />
58
-           <Option target="WIN_vc_x86_DEBUG" />
59
+           <Option target="WIN_vc_AMD64_DEBUG" />
60
            <Option target="WIN_vc_AMD64" />
61
        </Unit>
62
        <Unit filename="StDiagnosticsGUI.cpp" />
63
sview-15_10.tar.gz/StGLWidgets/StGLAssignHotKey.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLAssignHotKey.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLButton.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLButton.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLCheckbox.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLCheckbox.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLCheckboxTextured.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLCheckboxTextured.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLCombobox.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLCombobox.cpp Changed
15
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -93,6 +94,7 @@
8
                 aSubRectNew.moveRightTo(myMenu->getRectPxAbsolute().left() + aRoot->scale(10));
9
             }
10
         }
11
+        aRoot->setFocus(myMenu); // take input focus
12
     }
13
 }
14
 
15
sview-15_10.tar.gz/StGLWidgets/StGLDescription.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLDescription.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLFpsLabel.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLFpsLabel.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLImageProgram.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLImageProgram.cpp Changed
19
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -87,9 +88,9 @@
8
         "    bool evenX = int(mod(floor(gl_FragCoord.x + 1.5), 16.0)) >= 8;\n" // just simple 8 pixels check-board
9
         "    bool evenY = int(mod(floor(gl_FragCoord.y + 1.5), 16.0)) >= 8;\n"
10
         "    if((evenX && evenY) || (!evenX && !evenY)) {\n"
11
-        "        backColor = vec4(0.2, 0.2, 0.2, 1.0);\n"
12
+        "        backColor = vec4(0.4, 0.4, 0.4, 1.0);\n"
13
         "    } else {\n"
14
-        "        backColor = vec4(1.0, 1.0, 1.0, 1.0);\n"
15
+        "        backColor = vec4(0.6, 0.6, 0.6, 1.0);\n"
16
         "    }\n"
17
         "    color = mix(backColor, color, color.a);\n"
18
         "}\n\n");
19
sview-15_10.tar.gz/StGLWidgets/StGLImageRegion.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLImageRegion.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMenu.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMenu.cpp Changed
45
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -16,6 +17,7 @@
8
 #include <StGL/StGLContext.h>
9
 #include <StGLCore/StGLCore20.h>
10
 
11
+#include <StCore/StEvent.h>
12
 #include <StSlots/StAction.h>
13
 
14
 void StGLMenu::DeleteWithSubMenus(StGLMenu* theMenu) {
15
@@ -72,6 +74,11 @@
16
     }
17
 }
18
 
19
+void StGLMenu::setContextual(const bool theValue) {
20
+    myIsContextual = theValue;
21
+    myIsTopWidget  = theValue;
22
+}
23
+
24
 void StGLMenu::stglResize() {
25
     // Since all children should be StGLMenuItem implementing delayed resize,
26
     // just postpone resize until items will be actually rendered.
27
@@ -204,6 +211,17 @@
28
     StGLWidget::stglDraw(theView);
29
 }
30
 
31
+bool StGLMenu::doKeyDown(const StKeyEvent& theEvent) {
32
+    switch(theEvent.VKey) {
33
+        case ST_VK_ESCAPE: {
34
+            destroyWithDelay(this);
35
+            return true;
36
+        }
37
+        default:
38
+            return false;
39
+    }
40
+}
41
+
42
 bool StGLMenu::tryUnClick(const StPointD_t& theCursorZo,
43
                           const int&        theMouseBtn,
44
                           bool&             theIsItemUnclicked) {
45
sview-15_10.tar.gz/StGLWidgets/StGLMenuCheckbox.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMenuCheckbox.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMenuItem.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMenuItem.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMenuProgram.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMenuProgram.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMenuRadioButton.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMenuRadioButton.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMessageBox.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMessageBox.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLMsgStack.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLMsgStack.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLOpenFile.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLOpenFile.cpp Changed
29
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -124,7 +125,8 @@
8
         aName = theTarget;
9
     }
10
     if(aName.isEmpty()
11
-    || theTarget.isEmpty()) {
12
+    || theTarget.isEmpty()
13
+    || !StFileNode::isFileExists(theTarget)) {
14
         return;
15
     }
16
     myHotPaths.add(theTarget);
17
@@ -182,9 +184,9 @@
18
 
19
     myFolder = new StFolder(theFolder);
20
     myFolder->init(myExtensions, 1, true);
21
-    myCurrentPath->setText(StString("<b>Location:*</b>") + myFolder->getPath() + ST_FILE_SPLITTER);
22
+    StString aPath = myFolder->getPath();
23
+    myCurrentPath->setText(StString("<b>Location:*</b>") + aPath + (!aPath.isEmpty() ? ST_FILE_SPLITTER : ""));
24
 
25
-    StString aPath   = myFolder->getPath() + "";
26
     StString aPathUp = StFileNode::getFolderUp(aPath);
27
     if(!aPathUp.isEmpty()) {
28
         StGLMenuItem* anUpItem = new StGLPassiveMenuItem(myList);
29
sview-15_10.tar.gz/StGLWidgets/StGLPlayList.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLPlayList.cpp Changed
18
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -15,10 +16,6 @@
8
 #include <StGL/StGLContext.h>
9
 #include <StGLCore/StGLCore20.h>
10
 
11
-namespace {
12
-    static const size_t SHARE_PROGRAM_ID = StGLRootWidget::generateShareId();
13
-}
14
-
15
 StGLPlayList::StGLPlayList(StGLWidget*                 theParent,
16
                            const StHandle<StPlayList>& theList)
17
 : StGLWidget(theParent, -theParent->getRoot()->scale(32), 0),
18
sview-15_10.tar.gz/StGLWidgets/StGLRadioButton.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLRadioButton.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLRadioButtonFloat32.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLRadioButtonFloat32.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLRadioButtonTextured.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLRadioButtonTextured.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLRangeFieldFloat32.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLRangeFieldFloat32.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLRootWidget.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLRootWidget.cpp Changed
67
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -9,6 +10,8 @@
8
 #include <StGLWidgets/StGLRootWidget.h>
9
 
10
 #include <StGLWidgets/StGLMenuProgram.h>
11
+#include <StGLWidgets/StGLTextProgram.h>
12
+#include <StGLWidgets/StGLTextBorderProgram.h>
13
 
14
 #include <StGL/StGLContext.h>
15
 #include <StGLCore/StGLCore20.h>
16
@@ -49,6 +52,8 @@
17
   myLensDist(0.0f),
18
   myScrDispXPx(0),
19
   myMenuProgram(new StGLMenuProgram()),
20
+  myTextProgram(new StGLTextProgram()),
21
+  myTextBorderProgram(new StGLTextBorderProgram()),
22
   myIsMobile(false),
23
   myScaleGlX(1.0),
24
   myScaleGlY(1.0),
25
@@ -97,6 +102,10 @@
26
     if(!myGlCtx.isNull()) {
27
         myMenuProgram->release(*myGlCtx);
28
         myMenuProgram.nullify();
29
+        myTextProgram->release(*myGlCtx);
30
+        myTextProgram.nullify();
31
+        myTextBorderProgram->release(*myGlCtx);
32
+        myTextBorderProgram.nullify();
33
         if(!myCheckboxIcon.isNull()) {
34
             for(size_t aTexIter = 0; aTexIter < myCheckboxIcon->size(); ++aTexIter) {
35
                 myCheckboxIcon->changeValue(aTexIter).release(*myGlCtx);
36
@@ -228,6 +237,12 @@
37
     if(!myMenuProgram->isValid()
38
     && !myMenuProgram->init(*myGlCtx)) {
39
         return false;
40
+    } else if(!myTextProgram->isValid()
41
+           && !myTextProgram->init(*myGlCtx)) {
42
+        return false;
43
+    } else if(!myTextBorderProgram->isValid()
44
+           && !myTextBorderProgram->init(*myGlCtx)) {
45
+        return false;
46
     }
47
 
48
     return StGLWidget::stglInit();
49
@@ -253,6 +268,17 @@
50
             break;
51
     }
52
 
53
+    if(myTextProgram->isValid()) {
54
+        myTextProgram->use(*myGlCtx);
55
+        myTextProgram->setProjMat(*myGlCtx,       myProjCamera.getProjMatrix());
56
+        myTextProgram->unuse(*myGlCtx);
57
+    }
58
+    if(myTextBorderProgram->isValid()) {
59
+        myTextBorderProgram->use(*myGlCtx);
60
+        myTextBorderProgram->setProjMat(*myGlCtx, myProjCamera.getProjMatrix());
61
+        myTextBorderProgram->unuse(*myGlCtx);
62
+    }
63
+
64
     StGLWidget::stglDraw(theView);
65
 }
66
 
67
sview-15_10.tar.gz/StGLWidgets/StGLScrollArea.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLScrollArea.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLSubtitles.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLSubtitles.cpp Changed
25
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -119,7 +120,7 @@
8
     // update active image
9
     const StImagePlane& anImage = getFirst()->Image;
10
     if(!anImage.isNull()) {
11
-        Image.initCopy(anImage);
12
+        Image.initCopy(anImage, false);
13
     } else {
14
         Image.nullify();
15
     }
16
@@ -135,7 +136,7 @@
17
 
18
     const StImagePlane& anImage = theItem->Image;
19
     if(!anImage.isNull()) {
20
-        Image.initCopy(anImage);
21
+        Image.initCopy(anImage, false);
22
     }
23
 
24
     StArrayList<StHandle <StSubItem> >::add(theItem);
25
sview-15_10.tar.gz/StGLWidgets/StGLSwitchTextured.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLSwitchTextured.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLTable.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLTable.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2014-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLTextArea.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLTextArea.cpp Changed
338
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -7,7 +8,10 @@
8
  */
9
 
10
 #include <StGLWidgets/StGLTextArea.h>
11
+
12
 #include <StGLWidgets/StGLRootWidget.h>
13
+#include <StGLWidgets/StGLTextProgram.h>
14
+#include <StGLWidgets/StGLTextBorderProgram.h>
15
 
16
 #include <StGL/StGLContext.h>
17
 #include <StGL/StGLProgram.h>
18
@@ -16,205 +20,12 @@
19
 #include <StFile/StFileNode.h>
20
 #include <StThreads/StProcess.h>
21
 
22
-class StGLTextArea::StTextProgram : public StGLProgram {
23
-
24
-        public:
25
-
26
-    StTextProgram()
27
-    : StGLProgram("StGLTextArea, Text Program") {
28
-        //
29
-    }
30
-
31
-    StGLVarLocation getVVertexLoc() const {
32
-        return atrVVertexLoc;
33
-    }
34
-
35
-    StGLVarLocation getVTexCoordLoc() const {
36
-        return atrVTexCoordLoc;
37
-    }
38
-
39
-    void setProjMat(StGLContext&      theCtx,
40
-                    const StGLMatrix& theProjMat) {
41
-        theCtx.core20fwd->glUniformMatrix4fv(uniProjMatLoc, 1, GL_FALSE, theProjMat);
42
-    }
43
-
44
-    void setModelMat(StGLContext&      theCtx,
45
-                     const StGLMatrix& theModelMat) {
46
-        theCtx.core20fwd->glUniformMatrix4fv(uniModelMatLoc, 1, GL_FALSE, theModelMat);
47
-    }
48
-
49
-    void setTextColor(StGLContext&    theCtx,
50
-                      const StGLVec4& theTextColorVec) {
51
-        theCtx.core20fwd->glUniform4fv(uniTextColorLoc, 1, theTextColorVec);
52
-    }
53
-
54
-    virtual bool init(StGLContext& theCtx) {
55
-        const char VERTEX_SHADER[] =
56
-           "uniform mat4 uProjMat; \
57
-            uniform mat4 uModelMat; \
58
-            attribute vec4 vVertex; \
59
-            attribute vec2 vTexCoord; \
60
-            varying vec2 fTexCoord; \
61
-            void main(void) { \
62
-                fTexCoord = vTexCoord; \
63
-                gl_Position = uProjMat * uModelMat * vVertex; \
64
-            }";
65
-
66
-        const char FRAGMENT_GET_RED[] =
67
-           "float getAlpha(void) { return texture2D(uTexture, fTexCoord).r; }";
68
-
69
-        const char FRAGMENT_GET_ALPHA[] =
70
-           "float getAlpha(void) { return texture2D(uTexture, fTexCoord).a; }";
71
-
72
-        const char FRAGMENT_SHADER[] =
73
-           "uniform sampler2D uTexture;"
74
-           "uniform vec4 uTextColor;"
75
-           "varying vec2 fTexCoord;"
76
-           "float getAlpha(void);"
77
-           "void main(void) {"
78
-           "     vec4 color = uTextColor;"
79
-           "     color.a *= getAlpha();"
80
-           "     gl_FragColor = color;"
81
-           "}";
82
-
83
-        StGLVertexShader aVertexShader(StGLProgram::getTitle());
84
-        aVertexShader.init(theCtx, VERTEX_SHADER);
85
-        StGLAutoRelease aTmp1(theCtx, aVertexShader);
86
-
87
-        StGLFragmentShader aFragmentShader(StGLProgram::getTitle());
88
-        aFragmentShader.init(theCtx, FRAGMENT_SHADER,
89
-                             theCtx.arbTexRG ? FRAGMENT_GET_RED : FRAGMENT_GET_ALPHA);
90
-        StGLAutoRelease aTmp2(theCtx, aFragmentShader);
91
-        if(!StGLProgram::create(theCtx)
92
-           .attachShader(theCtx, aVertexShader)
93
-           .attachShader(theCtx, aFragmentShader)
94
-           .link(theCtx)) {
95
-            return false;
96
-        }
97
-
98
-        uniProjMatLoc   = StGLProgram::getUniformLocation(theCtx, "uProjMat");
99
-        uniModelMatLoc  = StGLProgram::getUniformLocation(theCtx, "uModelMat");
100
-        uniTextColorLoc = StGLProgram::getUniformLocation(theCtx, "uTextColor");
101
-        atrVVertexLoc   = StGLProgram::getAttribLocation(theCtx, "vVertex");
102
-        atrVTexCoordLoc = StGLProgram::getAttribLocation(theCtx, "vTexCoord");
103
-
104
-        StGLVarLocation uniTextureLoc = StGLProgram::getUniformLocation(theCtx, "uTexture");
105
-        if(uniTextureLoc.isValid()) {
106
-            StGLProgram::use(theCtx);
107
-            theCtx.core20fwd->glUniform1i(uniTextureLoc, StGLProgram::TEXTURE_SAMPLE_0);
108
-            StGLProgram::unuse(theCtx);
109
-        }
110
-
111
-        return uniProjMatLoc.isValid()
112
-            && uniModelMatLoc.isValid()
113
-            && uniTextColorLoc.isValid()
114
-            && atrVVertexLoc.isValid()
115
-            && atrVTexCoordLoc.isValid()
116
-            && uniTextureLoc.isValid();
117
-    }
118
-
119
-        private:
120
-
121
-    StGLVarLocation uniProjMatLoc;
122
-    StGLVarLocation uniModelMatLoc;
123
-    StGLVarLocation uniTextColorLoc;
124
-
125
-    StGLVarLocation atrVVertexLoc;
126
-    StGLVarLocation atrVTexCoordLoc;
127
-
128
-};
129
-
130
-class StGLTextArea::StBorderProgram : public StGLProgram {
131
-
132
-        public:
133
-
134
-    StBorderProgram()
135
-    : StGLProgram("StGLTextArea, Border Program"),
136
-      uniProjMatLoc(),
137
-      uniModelMatLoc(),
138
-      uniColorLoc(),
139
-      atrVVertexLoc() {
140
-        //
141
-    }
142
-
143
-    StGLVarLocation getVVertexLoc() const {
144
-        return atrVVertexLoc;
145
-    }
146
-
147
-    void setProjMat(StGLContext&      theCtx,
148
-                    const StGLMatrix& theProjMat) {
149
-        theCtx.core20fwd->glUniformMatrix4fv(uniProjMatLoc, 1, GL_FALSE, theProjMat);
150
-    }
151
-
152
-    void setModelMat(StGLContext&      theCtx,
153
-                     const StGLMatrix& theModelMat) {
154
-        theCtx.core20fwd->glUniformMatrix4fv(uniModelMatLoc, 1, GL_FALSE, theModelMat);
155
-    }
156
-
157
-    void setColor(StGLContext&    theCtx,
158
-                  const StGLVec4& theColorVec) {
159
-        theCtx.core20fwd->glUniform4fv(uniColorLoc, 1, theColorVec);
160
-    }
161
-
162
-    virtual bool init(StGLContext& theCtx) {
163
-        const char VERTEX_SHADER[] =
164
-           "uniform mat4 uProjMat; \
165
-            uniform mat4 uModelMat; \
166
-            attribute vec4 vVertex; \
167
-            void main(void) { \
168
-                gl_Position = uProjMat * uModelMat * vVertex; \
169
-            }";
170
-
171
-        const char FRAGMENT_SHADER[] =
172
-           "uniform vec4 uColor; \
173
-            void main(void) { \
174
-                gl_FragColor = uColor; \
175
-            }";
176
-
177
-        StGLVertexShader aVertexShader(StGLProgram::getTitle());
178
-        aVertexShader.init(theCtx, VERTEX_SHADER);
179
-        StGLAutoRelease aTmp1(theCtx, aVertexShader);
180
-
181
-        StGLFragmentShader aFragmentShader(StGLProgram::getTitle());
182
-        aFragmentShader.init(theCtx, FRAGMENT_SHADER);
183
-        StGLAutoRelease aTmp2(theCtx, aFragmentShader);
184
-        if(!StGLProgram::create(theCtx)
185
-           .attachShader(theCtx, aVertexShader)
186
-           .attachShader(theCtx, aFragmentShader)
187
-           .link(theCtx)) {
188
-            return false;
189
-        }
190
-
191
-        uniProjMatLoc  = StGLProgram::getUniformLocation(theCtx, "uProjMat");
192
-        uniModelMatLoc = StGLProgram::getUniformLocation(theCtx, "uModelMat");
193
-        uniColorLoc    = StGLProgram::getUniformLocation(theCtx, "uColor");
194
-        atrVVertexLoc  = StGLProgram::getAttribLocation(theCtx, "vVertex");
195
-        return uniProjMatLoc.isValid() && uniModelMatLoc.isValid() && uniColorLoc.isValid() && atrVVertexLoc.isValid();
196
-    }
197
-
198
-        private:
199
-
200
-    StGLVarLocation uniProjMatLoc;
201
-    StGLVarLocation uniModelMatLoc;
202
-    StGLVarLocation uniColorLoc;
203
-
204
-    StGLVarLocation atrVVertexLoc;
205
-
206
-};
207
-
208
-namespace {
209
-    static const size_t SHARE_TEXT_PROGRAM_ID   = StGLRootWidget::generateShareId();
210
-    static const size_t SHARE_BORDER_PROGRAM_ID = StGLRootWidget::generateShareId();
211
-}
212
-
213
 StGLTextArea::StGLTextArea(StGLWidget* theParent,
214
                            const int theLeft, const int theTop,
215
                            const StGLCorner theCorner,
216
                            const int theWidth, const int theHeight,
217
                            const FontSize theSize)
218
 : StGLWidget(theParent, theLeft, theTop, theCorner, theWidth, theHeight),
219
-  myTextProgram(getRoot()->getShare(SHARE_TEXT_PROGRAM_ID)),
220
-  myBorderProgram(getRoot()->getShare(SHARE_BORDER_PROGRAM_ID)),
221
   mySize(theSize),
222
   myTextColor(0.0f, 0.0f, 0.0f, 1.0f),
223
   myShadowColor(0.0f, 0.0f, 0.0f, 1.0f),
224
@@ -359,27 +170,6 @@
225
     }
226
 
227
     myTextWidth = (GLfloat )getRectPx().width();
228
-
229
-    // initialize text program
230
-    if(myTextProgram.isNull()) {
231
-        myTextProgram.create(getRoot()->getContextHandle(), new StTextProgram());
232
-        if(!myTextProgram->init(aCtx)) {
233
-            return false;
234
-        }
235
-    } else if(!myTextProgram->isValid()) {
236
-        return false;
237
-    }
238
-
239
-    // initialize border program
240
-    if(myBorderProgram.isNull()) {
241
-        myBorderProgram.create(getRoot()->getContextHandle(), new StBorderProgram());
242
-        if(!myBorderProgram->init(aCtx)) {
243
-            return false;
244
-        }
245
-    } else if(!myBorderProgram->isValid()) {
246
-        return false;
247
-    }
248
-
249
     myIsInitialized = true;
250
 
251
     myBorderIVertBuf.init(aCtx);
252
@@ -428,6 +218,7 @@
253
 
254
 void StGLTextArea::drawText(StGLContext& theCtx) {
255
     theCtx.core20fwd->glActiveTexture(GL_TEXTURE0);
256
+    StGLTextProgram& aProgram = myRoot->getTextProgram();
257
     for(size_t aTextureIter = 0; aTextureIter < myTexturesList.size(); ++aTextureIter) {
258
         if(!myTextVertBuf[aTextureIter]->isValid() || myTextVertBuf[aTextureIter]->getElemsCount() < 1) {
259
             continue;
260
@@ -435,13 +226,13 @@
261
 
262
         theCtx.core20fwd->glBindTexture(GL_TEXTURE_2D, myTexturesList[aTextureIter]);
263
 
264
-        myTextVertBuf[aTextureIter]->bindVertexAttrib(theCtx, myTextProgram->getVVertexLoc());
265
-        myTextTCrdBuf[aTextureIter]->bindVertexAttrib(theCtx, myTextProgram->getVTexCoordLoc());
266
+        myTextVertBuf[aTextureIter]->bindVertexAttrib(theCtx, aProgram.getVVertexLoc());
267
+        myTextTCrdBuf[aTextureIter]->bindVertexAttrib(theCtx, aProgram.getVTexCoordLoc());
268
 
269
         theCtx.core20fwd->glDrawArrays(GL_TRIANGLES, 0, GLsizei(myTextVertBuf[aTextureIter]->getElemsCount()));
270
 
271
-        myTextTCrdBuf[aTextureIter]->unBindVertexAttrib(theCtx, myTextProgram->getVTexCoordLoc());
272
-        myTextVertBuf[aTextureIter]->unBindVertexAttrib(theCtx, myTextProgram->getVVertexLoc());
273
+        myTextTCrdBuf[aTextureIter]->unBindVertexAttrib(theCtx, aProgram.getVTexCoordLoc());
274
+        myTextVertBuf[aTextureIter]->unBindVertexAttrib(theCtx, aProgram.getVVertexLoc());
275
     }
276
     theCtx.core20fwd->glBindTexture(GL_TEXTURE_2D, 0);
277
 }
278
@@ -484,28 +275,28 @@
279
             recomputeBorder(aCtx);
280
         }
281
 
282
-        myBorderProgram->use(aCtx);
283
-        myBorderProgram->setProjMat(aCtx, getCamera()->getProjMatrix());
284
-        myBorderProgram->setModelMat(aCtx, aModelMat);
285
+        StGLTextBorderProgram& aBorderProgram = myRoot->getTextBorderProgram();
286
+        aBorderProgram.use(aCtx);
287
+        aBorderProgram.setModelMat(aCtx, aModelMat);
288
 
289
-        myBorderProgram->setColor(aCtx, myBorderColor);
290
-        myBorderOVertBuf.bindVertexAttrib(aCtx, myBorderProgram->getVVertexLoc());
291
+        aBorderProgram.setColor(aCtx, myBorderColor);
292
+        myBorderOVertBuf.bindVertexAttrib(aCtx, aBorderProgram.getVVertexLoc());
293
         aCtx.core20fwd->glDrawArrays(GL_TRIANGLE_STRIP, 0, GLsizei(myBorderOVertBuf.getElemsCount()));
294
-        myBorderOVertBuf.unBindVertexAttrib(aCtx, myBorderProgram->getVVertexLoc());
295
+        myBorderOVertBuf.unBindVertexAttrib(aCtx, aBorderProgram.getVVertexLoc());
296
 
297
-        myBorderProgram->setColor(aCtx, myBackColor);
298
-        myBorderIVertBuf.bindVertexAttrib(aCtx, myBorderProgram->getVVertexLoc());
299
+        aBorderProgram.setColor(aCtx, myBackColor);
300
+        myBorderIVertBuf.bindVertexAttrib(aCtx, aBorderProgram.getVVertexLoc());
301
         aCtx.core20fwd->glDrawArrays(GL_TRIANGLE_STRIP, 0, GLsizei(myBorderIVertBuf.getElemsCount()));
302
-        myBorderIVertBuf.unBindVertexAttrib(aCtx, myBorderProgram->getVVertexLoc());
303
-        myBorderProgram->unuse(aCtx);
304
+        myBorderIVertBuf.unBindVertexAttrib(aCtx, aBorderProgram.getVVertexLoc());
305
+        aBorderProgram.unuse(aCtx);
306
     }
307
 
308
     // draw text
309
     aCtx.core20fwd->glActiveTexture(GL_TEXTURE0); // our shader is bound to first texture unit
310
-    myTextProgram->use(aCtx);
311
-        myTextProgram->setProjMat(aCtx, getCamera()->getProjMatrix());
312
-        myTextProgram->setModelMat(aCtx, aModelMat);
313
-        myTextProgram->setTextColor(aCtx, myToDrawShadow ? myShadowColor : aTextColor);
314
+    StGLTextProgram& aTextProgram = myRoot->getTextProgram();
315
+    aTextProgram.use(aCtx);
316
+        aTextProgram.setModelMat(aCtx, aModelMat);
317
+        aTextProgram.setColor(aCtx, myToDrawShadow ? myShadowColor : aTextColor);
318
 
319
         drawText(aCtx);
320
 
321
@@ -520,13 +311,13 @@
322
                                          0.0f));
323
             aModelMat.scale(aSizeOut, aSizeOut, 0.0f);
324
 
325
-            myTextProgram->setModelMat(aCtx, aModelMat);
326
-            myTextProgram->setTextColor(aCtx, aTextColor);
327
+            aTextProgram.setModelMat(aCtx, aModelMat);
328
+            aTextProgram.setColor(aCtx, aTextColor);
329
 
330
             drawText(aCtx);
331
         }
332
 
333
-    myTextProgram->unuse(aCtx);
334
+    aTextProgram.unuse(aCtx);
335
 
336
     aCtx.core20fwd->glDisable(GL_BLEND);
337
 
338
sview-15_11.tar.gz/StGLWidgets/StGLTextBorderProgram.cpp Added
78
 
1
@@ -0,0 +1,76 @@
2
+/**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * See accompanying file license-boost.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt
9
+ */
10
+
11
+#include <StGLWidgets/StGLTextBorderProgram.h>
12
+
13
+#include <StGL/StGLContext.h>
14
+#include <StGL/StGLMatrix.h>
15
+#include <StGLCore/StGLCore20.h>
16
+
17
+StGLTextBorderProgram::StGLTextBorderProgram()
18
+: StGLProgram("StGLTextBorderProgram") {
19
+    //
20
+}
21
+
22
+StGLTextBorderProgram::~StGLTextBorderProgram() {
23
+    //
24
+}
25
+
26
+void StGLTextBorderProgram::setProjMat(StGLContext&      theCtx,
27
+                                       const StGLMatrix& theProjMat) {
28
+    theCtx.core20fwd->glUniformMatrix4fv(myUniformProjMat, 1, GL_FALSE, theProjMat);
29
+}
30
+
31
+void StGLTextBorderProgram::setModelMat(StGLContext&      theCtx,
32
+                                        const StGLMatrix& theModelMat) {
33
+    theCtx.core20fwd->glUniformMatrix4fv(myUniformModelMat, 1, GL_FALSE, theModelMat);
34
+}
35
+
36
+void StGLTextBorderProgram::setColor(StGLContext&    theCtx,
37
+                                     const StGLVec4& theColor) {
38
+    theCtx.core20fwd->glUniform4fv(myUniformColor, 1, theColor);
39
+}
40
+
41
+bool StGLTextBorderProgram::init(StGLContext& theCtx) {
42
+    const char VERTEX_SHADER[] =
43
+       "uniform mat4 uProjMat; \
44
+        uniform mat4 uModelMat; \
45
+        attribute vec4 vVertex; \
46
+        void main(void) { \
47
+            gl_Position = uProjMat * uModelMat * vVertex; \
48
+        }";
49
+
50
+    const char FRAGMENT_SHADER[] =
51
+       "uniform vec4 uColor; \
52
+        void main(void) { \
53
+            gl_FragColor = uColor; \
54
+        }";
55
+
56
+    StGLVertexShader aVertexShader(StGLProgram::getTitle());
57
+    aVertexShader.init(theCtx, VERTEX_SHADER);
58
+    StGLAutoRelease aTmp1(theCtx, aVertexShader);
59
+
60
+    StGLFragmentShader aFragmentShader(StGLProgram::getTitle());
61
+    aFragmentShader.init(theCtx, FRAGMENT_SHADER);
62
+    StGLAutoRelease aTmp2(theCtx, aFragmentShader);
63
+    if(!StGLProgram::create(theCtx)
64
+       .attachShader(theCtx, aVertexShader)
65
+       .attachShader(theCtx, aFragmentShader)
66
+       .bindAttribLocation(theCtx, "vVertex", getVVertexLoc())
67
+       .link(theCtx)) {
68
+        return false;
69
+    }
70
+
71
+    myUniformProjMat  = StGLProgram::getUniformLocation(theCtx, "uProjMat");
72
+    myUniformModelMat = StGLProgram::getUniformLocation(theCtx, "uModelMat");
73
+    myUniformColor    = StGLProgram::getUniformLocation(theCtx, "uColor");
74
+    return myUniformProjMat.isValid()
75
+        && myUniformModelMat.isValid()
76
+        && myUniformColor.isValid();
77
+}
78
sview-15_11.tar.gz/StGLWidgets/StGLTextProgram.cpp Added
103
 
1
@@ -0,0 +1,101 @@
2
+/**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * See accompanying file license-boost.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt
9
+ */
10
+
11
+#include <StGLWidgets/StGLTextProgram.h>
12
+
13
+#include <StGL/StGLContext.h>
14
+#include <StGL/StGLMatrix.h>
15
+#include <StGLCore/StGLCore20.h>
16
+
17
+StGLTextProgram::StGLTextProgram()
18
+: StGLProgram("StGLTextProgram") {
19
+    //
20
+}
21
+
22
+StGLTextProgram::~StGLTextProgram() {
23
+    //
24
+}
25
+
26
+void StGLTextProgram::setProjMat(StGLContext&      theCtx,
27
+                                 const StGLMatrix& theProjMat) {
28
+    theCtx.core20fwd->glUniformMatrix4fv(myUniformProjMat, 1, GL_FALSE, theProjMat);
29
+}
30
+
31
+void StGLTextProgram::setModelMat(StGLContext&      theCtx,
32
+                                  const StGLMatrix& theModelMat) {
33
+    theCtx.core20fwd->glUniformMatrix4fv(myUniformModelMat, 1, GL_FALSE, theModelMat);
34
+}
35
+
36
+void StGLTextProgram::setColor(StGLContext&    theCtx,
37
+                               const StGLVec4& theColor) {
38
+    theCtx.core20fwd->glUniform4fv(myUniformColor, 1, theColor);
39
+}
40
+
41
+bool StGLTextProgram::init(StGLContext& theCtx) {
42
+    const char VERTEX_SHADER[] =
43
+       "uniform mat4 uProjMat; \
44
+        uniform mat4 uModelMat; \
45
+        attribute vec4 vVertex; \
46
+        attribute vec2 vTexCoord; \
47
+        varying vec2 fTexCoord; \
48
+        void main(void) { \
49
+            fTexCoord = vTexCoord; \
50
+            gl_Position = uProjMat * uModelMat * vVertex; \
51
+        }";
52
+
53
+    const char FRAGMENT_GET_RED[] =
54
+       "float getAlpha(void) { return texture2D(uTexture, fTexCoord).r; }";
55
+
56
+    const char FRAGMENT_GET_ALPHA[] =
57
+       "float getAlpha(void) { return texture2D(uTexture, fTexCoord).a; }";
58
+
59
+    const char FRAGMENT_SHADER[] =
60
+       "uniform sampler2D uTexture;"
61
+       "uniform vec4 uTextColor;"
62
+       "varying vec2 fTexCoord;"
63
+       "float getAlpha(void);"
64
+       "void main(void) {"
65
+       "     vec4 color = uTextColor;"
66
+       "     color.a *= getAlpha();"
67
+       "     gl_FragColor = color;"
68
+       "}";
69
+
70
+    StGLVertexShader aVertexShader(StGLProgram::getTitle());
71
+    aVertexShader.init(theCtx, VERTEX_SHADER);
72
+    StGLAutoRelease aTmp1(theCtx, aVertexShader);
73
+
74
+    StGLFragmentShader aFragmentShader(StGLProgram::getTitle());
75
+    aFragmentShader.init(theCtx, FRAGMENT_SHADER,
76
+                         theCtx.arbTexRG ? FRAGMENT_GET_RED : FRAGMENT_GET_ALPHA);
77
+    StGLAutoRelease aTmp2(theCtx, aFragmentShader);
78
+    if(!StGLProgram::create(theCtx)
79
+       .attachShader(theCtx, aVertexShader)
80
+       .attachShader(theCtx, aFragmentShader)
81
+       .bindAttribLocation(theCtx, "vVertex",   getVVertexLoc())
82
+       .bindAttribLocation(theCtx, "vTexCoord", getVTexCoordLoc())
83
+       .link(theCtx)) {
84
+        return false;
85
+    }
86
+
87
+    myUniformProjMat  = StGLProgram::getUniformLocation(theCtx, "uProjMat");
88
+    myUniformModelMat = StGLProgram::getUniformLocation(theCtx, "uModelMat");
89
+    myUniformColor    = StGLProgram::getUniformLocation(theCtx, "uTextColor");
90
+
91
+    StGLVarLocation aUniformTexture = StGLProgram::getUniformLocation(theCtx, "uTexture");
92
+    if(aUniformTexture.isValid()) {
93
+        StGLProgram::use(theCtx);
94
+        theCtx.core20fwd->glUniform1i(aUniformTexture, StGLProgram::TEXTURE_SAMPLE_0);
95
+        StGLProgram::unuse(theCtx);
96
+    }
97
+
98
+    return myUniformProjMat.isValid()
99
+        && myUniformModelMat.isValid()
100
+        && myUniformColor.isValid()
101
+        && aUniformTexture.isValid();
102
+}
103
sview-15_10.tar.gz/StGLWidgets/StGLTextureButton.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLTextureButton.cpp Changed
16
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -172,7 +173,7 @@
8
            "    if(uClicked > 10) {\n"
9
            "        v.z = v.z - 0.25;\n"
10
            "    } else {\n"
11
-           "        v.z = v.z + sin(uTime * v.x + uTime) * cos(v.y + uTime) * 0.25;\n"
12
+           "        v.z = v.z + sin(uTime * v.x + uTime) * cos(v.y + uTime) * 0.1;\n"
13
            "    }\n"
14
            "    gl_Position = uProjMat * v;\n"
15
            "}\n";
16
sview-15_10.tar.gz/StGLWidgets/StGLWidget.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLWidget.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLWidgetList.cpp -> sview-15_11.tar.gz/StGLWidgets/StGLWidgetList.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StGLWidgets/StGLWidgets.cbp -> sview-15_11.tar.gz/StGLWidgets/StGLWidgets.cbp Changed
73
 
1
@@ -6,29 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StGLWidgets" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option working_dir="../bin/$(TARGET_NAME)" />
8
-               <Option object_output="obj/$(TARGET_NAME)/" />
9
-               <Option type="3" />
10
-               <Option compiler="gcc" />
11
-               <Option createStaticLib="1" />
12
-               <Compiler>
13
-                   <Add option="-O3" />
14
-                   <Add option="-std=c++0x" />
15
-                   <Add option="-Wall" />
16
-                   <Add option="-g" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="user32" />
26
-               </Linker>
27
-           </Target>
28
            <Target title="WIN_vc_x86">
29
                <Option output="../bin/$(TARGET_NAME)/StGLWidgets" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="1" extension_auto="1" />
30
                <Option working_dir="../bin/$(TARGET_NAME)" />
31
@@ -51,12 +28,12 @@
32
                    <Add library="user32" />
33
                </Linker>
34
            </Target>
35
-           <Target title="WIN_vc_x86_DEBUG">
36
+           <Target title="WIN_vc_AMD64_DEBUG">
37
                <Option output="../bin/$(TARGET_NAME)/StGLWidgets" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="1" extension_auto="1" />
38
                <Option working_dir="../bin/$(TARGET_NAME)" />
39
                <Option object_output="obj/$(TARGET_NAME)/" />
40
                <Option type="3" />
41
-               <Option compiler="msvc10" />
42
+               <Option compiler="windows_sdk_x86_64" />
43
                <Option createStaticLib="1" />
44
                <Compiler>
45
                    <Add option="/MDd" />
46
@@ -234,14 +211,15 @@
47
        <Unit filename="StGLSwitchTextured.cpp" />
48
        <Unit filename="StGLTable.cpp" />
49
        <Unit filename="StGLTextArea.cpp" />
50
+       <Unit filename="StGLTextBorderProgram.cpp" />
51
+       <Unit filename="StGLTextProgram.cpp" />
52
        <Unit filename="StGLTextureButton.cpp" />
53
        <Unit filename="StGLWidget.cpp" />
54
        <Unit filename="StGLWidgetList.cpp" />
55
        <Unit filename="StGLWidgets.rc">
56
            <Option compilerVar="WINDRES" />
57
-           <Option target="WIN_gcc_x86" />
58
            <Option target="WIN_vc_x86" />
59
-           <Option target="WIN_vc_x86_DEBUG" />
60
+           <Option target="WIN_vc_AMD64_DEBUG" />
61
            <Option target="WIN_vc_AMD64" />
62
        </Unit>
63
        <Unit filename="StSubQueue.cpp" />
64
@@ -275,6 +253,8 @@
65
        <Unit filename="../include/StGLWidgets/StGLSwitchTextured.h" />
66
        <Unit filename="../include/StGLWidgets/StGLTable.h" />
67
        <Unit filename="../include/StGLWidgets/StGLTextArea.h" />
68
+       <Unit filename="../include/StGLWidgets/StGLTextBorderProgram.h" />
69
+       <Unit filename="../include/StGLWidgets/StGLTextProgram.h" />
70
        <Unit filename="../include/StGLWidgets/StGLTextureButton.h" />
71
        <Unit filename="../include/StGLWidgets/StGLWidget.h" />
72
        <Unit filename="../include/StGLWidgets/StGLWidgetList.h" />
73
sview-15_10.tar.gz/StGLWidgets/StGLWidgets.vcxproj -> sview-15_11.tar.gz/StGLWidgets/StGLWidgets.vcxproj Changed
10
 
1
@@ -234,6 +234,8 @@
2
     <ClCompile Include="StGLSwitchTextured.cpp" />
3
     <ClCompile Include="StGLTable.cpp" />
4
     <ClCompile Include="StGLTextArea.cpp" />
5
+    <ClCompile Include="StGLTextBorderProgram.cpp" />
6
+    <ClCompile Include="StGLTextProgram.cpp" />
7
     <ClCompile Include="StGLTextureButton.cpp" />
8
     <ClCompile Include="StGLWidget.cpp" />
9
     <ClCompile Include="StGLWidgetList.cpp" />
10
sview-15_10.tar.gz/StGLWidgets/StGLWidgets.vcxproj.filters -> sview-15_11.tar.gz/StGLWidgets/StGLWidgets.vcxproj.filters Changed
14
 
1
@@ -87,6 +87,12 @@
2
     <ClCompile Include="StGLTextArea.cpp">
3
       <Filter>Source files</Filter>
4
     </ClCompile>
5
+    <ClCompile Include="StGLTextBorderProgram.cpp">
6
+      <Filter>Source files</Filter>
7
+    </ClCompile>
8
+    <ClCompile Include="StGLTextProgram.cpp">
9
+      <Filter>Source files</Filter>
10
+    </ClCompile>
11
     <ClCompile Include="StGLTextureButton.cpp">
12
       <Filter>Source files</Filter>
13
     </ClCompile>
14
sview-15_10.tar.gz/StGLWidgets/StSubQueue.cpp -> sview-15_11.tar.gz/StGLWidgets/StSubQueue.cpp Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/StImageViewer/StImageLoader.cpp -> sview-15_11.tar.gz/StImageViewer/StImageLoader.cpp Changed
95
 
1
@@ -49,11 +49,12 @@
2
 StImageLoader::StImageLoader(const StImageFile::ImageClass     theImageLib,
3
                              const StHandle<StMsgQueue>&       theMsgQueue,
4
                              const StHandle<StLangMap>&        theLangMap,
5
+                             const StHandle<StPlayList>&       thePlayList,
6
                              const StHandle<StGLTextureQueue>& theTextureQueue,
7
                              const GLint                       theMaxTexDim)
8
 : myMimeList(ST_IMAGES_MIME_STRING),
9
   myLangMap(theLangMap),
10
-  myPlayList(1),
11
+  myPlayList(thePlayList),
12
   myLoadNextEvent(false),
13
   myStFormatByUser(StFormat_AUTO),
14
   myMaxTexDim(theMaxTexDim),
15
@@ -61,7 +62,7 @@
16
   myMsgQueue(theMsgQueue),
17
   myImageLib(theImageLib),
18
   myAction(Action_NONE) {
19
-      myPlayList.setExtensions(myMimeList.getExtensionsList());
20
+      myPlayList->setExtensions(myMimeList.getExtensionsList());
21
       myThread = new StThread(threadFunction, (void* )this, "StImageLoader");
22
 }
23
 
24
@@ -208,6 +209,9 @@
25
         return false;
26
     }
27
 
28
+    // clear active
29
+    myTextureQueue->clear();
30
+
31
     StHandle<StImageInfo> anImgInfo = new StImageInfo();
32
     anImgInfo->Id        = theParams;
33
     anImgInfo->Path      = aFilePath;
34
@@ -358,6 +362,12 @@
35
     }
36
     const double aLoadTimeMSec = aLoadTimer.getElapsedTimeInMilliSec();
37
 
38
+    // copy metadata
39
+    for(size_t aTagIter = 0; aTagIter < anImageFileL->getMetadata().size(); ++aTagIter) {
40
+        const StDictEntry& aTag = anImageFileL->getMetadata().getFromIndex(aTagIter);
41
+        anImgInfo->Info.add(aTag);
42
+    }
43
+
44
     // detect information from file name
45
     bool isAnamorphByName = false;
46
     anImgInfo->StInfoFileName = st::formatFromName(aTitleString, isAnamorphByName);
47
@@ -431,15 +441,22 @@
48
 #endif
49
 
50
     // finally push image data in Texture Queue
51
-    while(myTextureQueue->isFull()) {
52
-        StThread::sleep(10);
53
-    }
54
-
55
     myTextureQueue->setConnectedStream(true);
56
+
57
     if(!anImageR->isNull()) {
58
-        myTextureQueue->push(*anImageL, *anImageR, theParams, StFormat_SeparateFrames, aSrcCubemap, 0.0);
59
-    } else {
60
-        myTextureQueue->push(*anImageL, *anImageR, theParams, aSrcFormatCurr, aSrcCubemap, 0.0);
61
+        aSrcFormatCurr = StFormat_SeparateFrames;
62
+    }
63
+
64
+    {
65
+        StImage anImageRefL, anImageRefR;
66
+        StHandle<StBufferCounter> aRefL = new StImageFileCounter(anImageL);
67
+        anImageRefL.initReference(*anImageL, aRefL);
68
+        if(!anImageR->isNull()) {
69
+            StHandle<StBufferCounter> aRefR = new StImageFileCounter(anImageR);
70
+            anImageRefR.initReference(*anImageR, aRefR);
71
+        }
72
+
73
+        myTextureQueue->push(anImageRefL, anImageRefR, theParams, aSrcFormatCurr, aSrcCubemap, 0.0);
74
     }
75
 
76
     if(!stAreEqual(anImageFileL->getPixelRatio(), 1.0f, 0.001f)) {
77
@@ -639,7 +656,7 @@
78
                 myAction = Action_NONE;
79
                 myLoadNextEvent.reset();
80
                 // save current image (set as current in playlist)
81
-                if(myPlayList.getCurrentFile(aFileToLoad, aFileParams)) {
82
+                if(myPlayList->getCurrentFile(aFileToLoad, aFileParams)) {
83
                     saveImage(aFileToLoad, aFileParams, anImgType);
84
                 }
85
                 break;
86
@@ -660,7 +677,7 @@
87
             default: {
88
                 // load next image (set as current in playlist)
89
                 myLoadNextEvent.reset();
90
-                if(myPlayList.getCurrentFile(aFileToLoad, aFileParams)) {
91
+                if(myPlayList->getCurrentFile(aFileToLoad, aFileParams)) {
92
                     loadImage(aFileToLoad, aFileParams);
93
                 }
94
                 break;
95
sview-15_10.tar.gz/StImageViewer/StImageLoader.h -> sview-15_11.tar.gz/StImageViewer/StImageLoader.h Changed
27
 
1
@@ -73,6 +73,7 @@
2
     ST_LOCAL StImageLoader(const StImageFile::ImageClass     theImageLib,
3
                            const StHandle<StMsgQueue>&       theMsgQueue,
4
                            const StHandle<StLangMap>&        theLangMap,
5
+                           const StHandle<StPlayList>&       thePlayList,
6
                            const StHandle<StGLTextureQueue>& theTextureQueue,
7
                            const GLint                       theMaxTexDim);
8
     ST_LOCAL ~StImageLoader();
9
@@ -119,7 +120,7 @@
10
     }
11
 
12
     ST_LOCAL StPlayList& getPlayList() {
13
-        return myPlayList;
14
+        return *myPlayList;
15
     }
16
 
17
     ST_LOCAL void setStereoFormat(const StFormat theSrcFormat) {
18
@@ -179,7 +180,7 @@
19
     const StMIMEList           myMimeList;
20
     StHandle<StThread>         myThread;        //!< main loop thread
21
     StHandle<StLangMap>        myLangMap;       //!< translations dictionary
22
-    StPlayList                 myPlayList;      //!< play list
23
+    StHandle<StPlayList>       myPlayList;      //!< play list
24
     mutable StMutex            myLock;          //!< lock to access not thread-safe properties
25
     StCondition                myLoadNextEvent;
26
     StFormat                   myStFormatByUser;//!< target source format (auto-detect by default)
27
sview-15_10.tar.gz/StImageViewer/StImageViewer.cbp -> sview-15_11.tar.gz/StImageViewer/StImageViewer.cbp Changed
63
 
1
@@ -6,36 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStImageViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Comdlg32" />
27
-                   <Add library="shell32" />
28
-                   <Add library="Wsock32" />
29
-                   <Add library="Version" />
30
-               </Linker>
31
-               <ExtraCommands>
32
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
33
-               </ExtraCommands>
34
-           </Target>
35
            <Target title="WIN_vc_x86">
36
                <Option output="../bin/$(TARGET_NAME)/StImageViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
37
                <Option object_output="obj/$(TARGET_NAME)/" />
38
@@ -68,11 +38,11 @@
39
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
40
                </ExtraCommands>
41
            </Target>
42
-           <Target title="WIN_vc_x86_DEBUG">
43
+           <Target title="WIN_vc_AMD64_DEBUG">
44
                <Option output="../bin/$(TARGET_NAME)/StImageViewer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
45
                <Option object_output="obj/$(TARGET_NAME)/" />
46
                <Option type="3" />
47
-               <Option compiler="msvc10" />
48
+               <Option compiler="windows_sdk_x86_64" />
49
                <Option createStaticLib="1" />
50
                <Compiler>
51
                    <Add option="/MDd" />
52
@@ -276,9 +246,8 @@
53
        <Unit filename="StImageViewer.h" />
54
        <Unit filename="StImageViewer.rc">
55
            <Option compilerVar="WINDRES" />
56
-           <Option target="WIN_gcc_x86" />
57
            <Option target="WIN_vc_x86" />
58
-           <Option target="WIN_vc_x86_DEBUG" />
59
+           <Option target="WIN_vc_AMD64_DEBUG" />
60
            <Option target="WIN_vc_AMD64" />
61
        </Unit>
62
        <Unit filename="StImageViewerGUI.cpp" />
63
sview-15_10.tar.gz/StImageViewer/StImageViewer.cpp -> sview-15_11.tar.gz/StImageViewer/StImageViewer.cpp Changed
308
 
1
@@ -29,10 +29,12 @@
2
 #include <StGLWidgets/StGLImageRegion.h>
3
 #include <StGLWidgets/StGLMessageBox.h>
4
 #include <StGLWidgets/StGLMsgStack.h>
5
+#include <StGLWidgets/StGLPlayList.h>
6
 #include <StSettings/StSettings.h>
7
 #include <StSocket/StCheckUpdates.h>
8
 #include <StThreads/StThread.h>
9
 #include <StImage/StImageFile.h>
10
+#include <StCore/StSearchMonitors.h>
11
 
12
 #include "../StOutAnaglyph/StOutAnaglyph.h"
13
 #include "../StOutDual/StOutDual.h"
14
@@ -54,10 +56,10 @@
15
     static const char ST_SETTING_RECENT_L[]    = "recentL";
16
     static const char ST_SETTING_RECENT_R[]    = "recentR";
17
     static const char ST_SETTING_SAVE_RECENT[] = "toSaveRecent";
18
+    static const char ST_SETTING_SHOW_LIST[]   = "showPlaylist";
19
     static const char ST_SETTING_COMPRESS[]    = "toCompress";
20
     static const char ST_SETTING_ESCAPENOQUIT[]= "escNoQuit";
21
     static const char ST_SETTING_FULLSCREENUI[]= "fullScreenUI";
22
-    static const char ST_SETTING_SHOW_TOOLBAR[]= "toShowToolbar";
23
 
24
     static const char ST_SETTING_SCALE_ADJUST[]  = "scaleAdjust";
25
     static const char ST_SETTING_SCALE_FORCE2X[] = "scale2X";
26
@@ -81,6 +83,14 @@
27
     static const char ST_ARGUMENT_FILE_RIGHT[] = "right";
28
     static const char ST_ARGUMENT_FILE_LAST[]  = "last";
29
 
30
+    static const char ST_ARGUMENT_SHOW_MENU[]  = "toShowMenu";
31
+    static const char ST_ARGUMENT_SHOW_TOPBAR[]= "toShowTopbar";
32
+    static const char ST_ARGUMENT_MONITOR[]    = "monitorId";
33
+    static const char ST_ARGUMENT_WINLEFT[]    = "windowLeft";
34
+    static const char ST_ARGUMENT_WINTOP[]     = "windowTop";
35
+    static const char ST_ARGUMENT_WINWIDTH[]   = "windowWidth";
36
+    static const char ST_ARGUMENT_WINHEIGHT[]  = "windowHeight";
37
+
38
 }
39
 
40
 /**
41
@@ -250,6 +260,7 @@
42
                              const StHandle<StOpenInfo>&        theOpenInfo,
43
                              const StString&                    theAppName)
44
 : StApplication(theResMgr, theParentWin, theOpenInfo),
45
+  myPlayList(new StPlayList(1, false)),
46
   myAppName(!theAppName.isEmpty() ? theAppName : ST_DRAWER_PLUGIN_NAME),
47
   myEventLoaded(false),
48
   //
49
@@ -290,9 +301,12 @@
50
     params.checkUpdatesDays = new StInt32Param(7);
51
     params.srcFormat        = new StInt32Param(StFormat_AUTO);
52
     params.srcFormat->signals.onChanged.connect(this, &StImageViewer::doSwitchSrcFormat);
53
+    params.ToShowPlayList   = new StBoolParam(false);
54
+    params.ToShowPlayList->signals.onChanged = stSlot(this, &StImageViewer::doShowPlayList);
55
     params.ToTrackHead   = new StBoolParamNamed(true,  tr(StImageViewerStrings::MENU_VIEW_TRACK_HEAD));
56
     params.ToShowFps     = new StBoolParamNamed(false, tr(StImageViewerStrings::MENU_SHOW_FPS));
57
-    params.ToShowToolbar = new StBoolParamNamed(true, "Show toolbar");
58
+    params.ToShowMenu    = new StBoolParamNamed(true, "Show main menu");
59
+    params.ToShowTopbar  = new StBoolParamNamed(true, "Show top toolbar");
60
     params.IsMobileUI = new StBoolParamNamed(StWindow::isMobile(), "Mobile UI");
61
     params.IsMobileUI->signals.onChanged = stSlot(this, &StImageViewer::doScaleHiDPI);
62
     params.IsVSyncOn  = new StBoolParam(true);
63
@@ -311,6 +325,7 @@
64
     mySettings->loadParam (ST_SETTING_SHOW_FPS,           params.ToShowFps);
65
     mySettings->loadParam (ST_SETTING_MOBILE_UI,          params.IsMobileUI);
66
     mySettings->loadParam (ST_SETTING_VSYNC,              params.IsVSyncOn);
67
+    mySettings->loadParam (ST_SETTING_SHOW_LIST,          params.ToShowPlayList);
68
 
69
     int32_t aSlideShowDelayInt = int32_t(mySlideShowDelay);
70
     mySettings->loadInt32 (ST_SETTING_SLIDESHOW_DELAY,    aSlideShowDelayInt);
71
@@ -445,6 +460,7 @@
72
         mySettings->saveParam (ST_SETTING_SHOW_FPS,  params.ToShowFps);
73
         mySettings->saveParam (ST_SETTING_MOBILE_UI, params.IsMobileUI);
74
         mySettings->saveParam (ST_SETTING_VSYNC,     params.IsVSyncOn);
75
+        mySettings->saveParam (ST_SETTING_SHOW_LIST, params.ToShowPlayList);
76
         if(myToSaveSrcFormat) {
77
             mySettings->saveParam(ST_SETTING_SRCFORMAT, params.srcFormat);
78
         }
79
@@ -497,7 +513,7 @@
80
 
81
     // create the GUI with default values
82
     params.ScaleHiDPI->setValue(myWindow->getScaleFactor());
83
-    myGUI = new StImageViewerGUI(this, myWindow.access(), myLangMap.access(),
84
+    myGUI = new StImageViewerGUI(this, myWindow.access(), myLangMap.access(), myPlayList,
85
                                  myLoader.isNull() ? NULL : myLoader->getTextureQueue());
86
     myGUI->setContext(myContext);
87
 
88
@@ -571,7 +587,7 @@
89
     StString anImgLibStr;
90
     mySettings->loadString(ST_SETTING_IMAGELIB, anImgLibStr);
91
     params.imageLib = StImageFile::imgLibFromString(anImgLibStr);
92
-    myLoader = new StImageLoader(params.imageLib, myMsgQueue, myLangMap,
93
+    myLoader = new StImageLoader(params.imageLib, myMsgQueue, myLangMap, myPlayList,
94
                                  myGUI->myImage->getTextureQueue(), myContext->getMaxTextureSize());
95
     myLoader->signals.onLoaded.connect(this, &StImageViewer::doLoaded);
96
     myLoader->setCompressMemory(myWindow->isMobile());
97
@@ -597,47 +613,92 @@
98
 }
99
 
100
 void StImageViewer::parseArguments(const StArgumentsMap& theArguments) {
101
-    StArgument argFullscreen = theArguments[ST_SETTING_FULLSCREEN];
102
-    StArgument argSlideshow  = theArguments[ST_SETTING_SLIDESHOW];
103
-    StArgument argViewMode   = theArguments[ST_SETTING_VIEWMODE];
104
-    StArgument argSrcFormat  = theArguments[ST_SETTING_SRCFORMAT];
105
-    StArgument argImgLibrary = theArguments[ST_SETTING_IMAGELIB];
106
-    StArgument argToCompress = theArguments[ST_SETTING_COMPRESS];
107
-    StArgument argEscNoQuit  = theArguments[ST_SETTING_ESCAPENOQUIT];
108
-    StArgument argFullScreenUI = theArguments[ST_SETTING_FULLSCREENUI];
109
-    StArgument argToolbar    = theArguments[ST_SETTING_SHOW_TOOLBAR];
110
-    StArgument argSaveRecent = theArguments[ST_SETTING_SAVE_RECENT];
111
-    if(argToCompress.isValid()) {
112
-        myLoader->setCompressMemory(!argToCompress.isValueOff());
113
-    }
114
-    if(argEscNoQuit.isValid()) {
115
-        myEscNoQuit = !argEscNoQuit.isValueOff();
116
-    }
117
-    if(argFullScreenUI.isValid()) {
118
-        myToHideUIFullScr = argFullScreenUI.isValueOff();
119
-    }
120
-    if(argToolbar.isValid()) {
121
-        params.ToShowToolbar->setValue(!argToolbar.isValueOff());
122
-    }
123
-    if(argFullscreen.isValid()) {
124
-        params.isFullscreen->setValue(!argFullscreen.isValueOff());
125
-    }
126
-    if(argSlideshow.isValid() && !argSlideshow.isValueOff()) {
127
+    StArgument anArgSlideshow  = theArguments[ST_SETTING_SLIDESHOW];
128
+    StArgument anArgViewMode   = theArguments[ST_SETTING_VIEWMODE];
129
+    StArgument anArgSrcFormat  = theArguments[ST_SETTING_SRCFORMAT];
130
+    StArgument anArgImgLibrary = theArguments[ST_SETTING_IMAGELIB];
131
+    StArgument anArgToCompress = theArguments[ST_SETTING_COMPRESS];
132
+    StArgument anArgEscNoQuit  = theArguments[ST_SETTING_ESCAPENOQUIT];
133
+    StArgument anArgFullScreenUI = theArguments[ST_SETTING_FULLSCREENUI];
134
+    StArgument anArgShowMenu   = theArguments[ST_ARGUMENT_SHOW_MENU];
135
+    StArgument anArgShowTopbar = theArguments[ST_ARGUMENT_SHOW_TOPBAR];
136
+    StArgument anArgSaveRecent = theArguments[ST_SETTING_SAVE_RECENT];
137
+
138
+    StArgument anArgFullscreen = theArguments[ST_SETTING_FULLSCREEN];
139
+    StArgument anArgMonitor    = theArguments[ST_ARGUMENT_MONITOR];
140
+    StArgument anArgWinLeft    = theArguments[ST_ARGUMENT_WINLEFT];
141
+    StArgument anArgWinTop     = theArguments[ST_ARGUMENT_WINTOP];
142
+    StArgument anArgWinWidth   = theArguments[ST_ARGUMENT_WINWIDTH];
143
+    StArgument anArgWinHeight  = theArguments[ST_ARGUMENT_WINHEIGHT];
144
+    StRect<int32_t> aRect = myWindow->getWindowedPlacement();
145
+    bool toSetRect = false;
146
+    if(anArgMonitor.isValid()) {
147
+        const size_t     aMonId  = (size_t )::atol(anArgMonitor.getValue().toCString());
148
+        const StMonitor& aMonOld = myWindow->getMonitors()[aRect.center()];
149
+        const StMonitor& aMonNew = myWindow->getMonitors()[aMonId];
150
+        if(aMonOld.getId() != aMonNew.getId()) {
151
+            const int aLeft = aRect.left() - aMonOld.getVRect().left();
152
+            const int aTop  = aRect.top()  - aMonOld.getVRect().top();
153
+            aRect.moveLeftTo(aMonNew.getVRect().left() + aLeft);
154
+            aRect.moveTopTo (aMonNew.getVRect().top()  + aTop);
155
+            toSetRect = true;
156
+        }
157
+    }
158
+    if(anArgWinLeft.isValid()) {
159
+        aRect.moveLeftTo(::atol(anArgWinLeft.getValue().toCString()));
160
+        toSetRect = true;
161
+    }
162
+    if(anArgWinTop.isValid()) {
163
+        aRect.moveTopTo(::atol(anArgWinTop.getValue().toCString()));
164
+        toSetRect = true;
165
+    }
166
+    if(anArgWinWidth.isValid()) {
167
+        aRect.right() = aRect.left() + ::atol(anArgWinWidth.getValue().toCString());
168
+        toSetRect = true;
169
+    }
170
+    if(anArgWinHeight.isValid()) {
171
+        aRect.bottom() = aRect.top() + ::atol(anArgWinHeight.getValue().toCString());
172
+        toSetRect = true;
173
+    }
174
+    if(toSetRect) {
175
+        myWindow->setPlacement(aRect, true);
176
+    }
177
+    if(anArgFullscreen.isValid()) {
178
+        params.isFullscreen->setValue(!anArgFullscreen.isValueOff());
179
+    }
180
+
181
+    if(anArgToCompress.isValid()) {
182
+        myLoader->setCompressMemory(!anArgToCompress.isValueOff());
183
+    }
184
+    if(anArgEscNoQuit.isValid()) {
185
+        myEscNoQuit = !anArgEscNoQuit.isValueOff();
186
+    }
187
+    if(anArgFullScreenUI.isValid()) {
188
+        myToHideUIFullScr = anArgFullScreenUI.isValueOff();
189
+    }
190
+    if(anArgShowMenu.isValid()) {
191
+        params.ToShowMenu->setValue(!anArgShowMenu.isValueOff());
192
+    }
193
+    if(anArgShowTopbar.isValid()) {
194
+        params.ToShowTopbar->setValue(!anArgShowTopbar.isValueOff());
195
+    }
196
+    if( anArgSlideshow.isValid()
197
+    && !anArgSlideshow.isValueOff()) {
198
         doSlideShow();
199
     }
200
-    if(argViewMode.isValid()) {
201
-        myLoader->getPlayList().changeDefParams().ViewingMode = StStereoParams::GET_VIEW_MODE_FROM_STRING(argViewMode.getValue());
202
+    if(anArgViewMode.isValid()) {
203
+        myLoader->getPlayList().changeDefParams().ViewingMode = StStereoParams::GET_VIEW_MODE_FROM_STRING(anArgViewMode.getValue());
204
     }
205
-    if(argSrcFormat.isValid()) {
206
-        params.srcFormat->setValue(st::formatFromString(argSrcFormat.getValue()));
207
+    if(anArgSrcFormat.isValid()) {
208
+        params.srcFormat->setValue(st::formatFromString(anArgSrcFormat.getValue()));
209
         myToSaveSrcFormat = false; // this setting is temporary!
210
     }
211
-    if(argImgLibrary.isValid()) {
212
-        params.imageLib = StImageFile::imgLibFromString(argImgLibrary.getValue());
213
+    if(anArgImgLibrary.isValid()) {
214
+        params.imageLib = StImageFile::imgLibFromString(anArgImgLibrary.getValue());
215
         myLoader->setImageLib(params.imageLib);
216
     }
217
-    if(argSaveRecent.isValid()) {
218
-        params.ToSaveRecent->setValue(!argSaveRecent.isValueOff());
219
+    if(anArgSaveRecent.isValid()) {
220
+        params.ToSaveRecent->setValue(!anArgSaveRecent.isValueOff());
221
     }
222
 }
223
 
224
@@ -932,12 +993,38 @@
225
 }
226
 
227
 void StImageViewer::doFileDrop(const StDNDropEvent& theEvent) {
228
-    const StString aFilePath = theEvent.File;
229
-    if(myLoader->getPlayList().checkExtension(aFilePath)) {
230
-        myLoader->getPlayList().open(aFilePath);
231
+    if(theEvent.NbFiles == 0) {
232
+        return;
233
+    }
234
+
235
+    const StString aFile1 = theEvent.Files[0];
236
+    if(!myLoader->getPlayList().checkExtension(aFile1)) {
237
+        return;
238
+    } else if(theEvent.NbFiles == 1) {
239
+        myLoader->getPlayList().open(aFile1);
240
+        doUpdateStateLoading();
241
+        myLoader->doLoadNext();
242
+        return;
243
+    } else if(theEvent.NbFiles == 2
244
+          && !StFolder::isFolder(aFile1)
245
+          && !StFolder::isFolder(StString(theEvent.Files[1]))) {
246
+        myLoader->getPlayList().clear();
247
+        myLoader->getPlayList().addOneFile(aFile1, StString(theEvent.Files[1]));
248
         doUpdateStateLoading();
249
         myLoader->doLoadNext();
250
+        return;
251
+    }
252
+
253
+    myLoader->getPlayList().clear();
254
+    for(uint32_t aFileIter = 0; aFileIter < theEvent.NbFiles; ++aFileIter) {
255
+        StString aPath(theEvent.Files[aFileIter]);
256
+        if(!StFolder::isFolder(aPath)) {
257
+            myLoader->getPlayList().addOneFile(aPath, StMIME());
258
+        }
259
     }
260
+
261
+    doUpdateStateLoading();
262
+    myLoader->doLoadNext();
263
 }
264
 
265
 void StImageViewer::doNavigate(const StNavigEvent& theEvent) {
266
@@ -981,7 +1068,6 @@
267
         myLoader->doLoadNext();
268
     }
269
 
270
-    const bool isMouseMove = myWindow->isMouseMoved();
271
     if(mySlideShowTimer.getElapsedTimeInSec() > mySlideShowDelay) {
272
         mySlideShowTimer.restart();
273
         doListNext();
274
@@ -999,7 +1085,7 @@
275
     }
276
 
277
     const bool isFullScreen = params.isFullscreen->getValue();
278
-    myGUI->setVisibility(myWindow->getMousePos(), isMouseMove, myToHideUIFullScr && isFullScreen);
279
+    myGUI->setVisibility(myWindow->getMousePos(), myToHideUIFullScr && isFullScreen);
280
     bool toHideCursor = isFullScreen && myGUI->toHideCursor();
281
     myWindow->showCursor(!toHideCursor);
282
 }
283
@@ -1235,6 +1321,24 @@
284
     myEventLoaded.set();
285
 }
286
 
287
+void StImageViewer::doShowPlayList(const bool theToShow) {
288
+    if(myGUI.isNull()
289
+    || myGUI->myPlayList == NULL) {
290
+        return;
291
+    }
292
+
293
+    myGUI->myPlayList->setOpacity(theToShow ? 1.0f : 0.0f, false);
294
+}
295
+
296
+void StImageViewer::doFileNext() {
297
+    if(myLoader.isNull()) {
298
+        return;
299
+    }
300
+
301
+    myLoader->doLoadNext();
302
+    doUpdateStateLoading();
303
+}
304
+
305
 bool StImageViewer::getCurrentFile(StHandle<StFileNode>&     theFileNode,
306
                                    StHandle<StStereoParams>& theParams,
307
                                    StHandle<StImageInfo>&    theInfo) {
308
sview-15_10.tar.gz/StImageViewer/StImageViewer.h -> sview-15_11.tar.gz/StImageViewer/StImageViewer.h Changed
29
 
1
@@ -131,7 +131,9 @@
2
         StHandle<StInt32Param>   checkUpdatesDays; //!< days count between updates checks
3
         StHandle<StInt32Param>   srcFormat;        //!< source format
4
         StHandle<StBoolParam>    ToTrackHead;      //!< enable/disable head-tracking
5
-        StHandle<StBoolParam>    ToShowToolbar;    //!< show/hide toolbar
6
+        StHandle<StBoolParam>    ToShowMenu;       //!< show main menu
7
+        StHandle<StBoolParam>    ToShowTopbar;     //!< show topbar
8
+        StHandle<StBoolParam>    ToShowPlayList;   //!< display playlist
9
         StHandle<StBoolParam>    ToShowFps;        //!< display FPS meter
10
         StHandle<StBoolParam>    IsMobileUI;       //!< display mobile interface
11
         StHandle<StBoolParam>    IsVSyncOn;        //!< flag to use VSync
12
@@ -158,6 +160,8 @@
13
     ST_LOCAL void doSwitchSrcFormat(const int32_t theSrcFormat);
14
     ST_LOCAL void doSwitchViewMode(const int32_t theMode);
15
     ST_LOCAL void doPanoramaOnOff(const size_t );
16
+    ST_LOCAL void doShowPlayList(const bool theToShow);
17
+    ST_LOCAL void doFileNext();
18
 
19
         public:
20
 
21
@@ -216,6 +220,7 @@
22
     StHandle<StGLContext>      myContext;
23
     StHandle<StSettings>       mySettings;        //!< settings manager for Image Viewer plugin
24
     StHandle<StTranslations>   myLangMap;         //!< translated strings map
25
+    StHandle<StPlayList>       myPlayList;        //!< play list
26
     StHandle<StImageViewerGUI> myGUI;             //!< GUI root widget
27
     StHandle<StImageLoader>    myLoader;          //!< main image loader class
28
     StHandle<StCheckUpdates>   myUpdates;         //!< check updates utility
29
sview-15_10.tar.gz/StImageViewer/StImageViewerGUI.cpp -> sview-15_11.tar.gz/StImageViewer/StImageViewerGUI.cpp Changed
289
 
1
@@ -35,6 +35,7 @@
2
 #include <StGLWidgets/StGLMenuItem.h>
3
 #include <StGLWidgets/StGLMsgStack.h>
4
 #include <StGLWidgets/StGLOpenFile.h>
5
+#include <StGLWidgets/StGLPlayList.h>
6
 #include <StGLWidgets/StGLRangeFieldFloat32.h>
7
 #include <StGLWidgets/StGLScrollArea.h>
8
 #include <StGLWidgets/StGLSwitchTextured.h>
9
@@ -62,32 +63,51 @@
10
     myPlugin->doSaveImageInfo(0);
11
 }
12
 
13
-void StImageViewerGUI::createDesktopUI() {
14
+void StImageViewerGUI::createDesktopUI(const StHandle<StPlayList>& thePlayList) {
15
     if(myPlugin->params.ToShowFps->getValue()) {
16
         myFpsWidget = new StGLFpsLabel(this);
17
     }
18
 
19
     createUpperToolbar();
20
 
21
-    const StMarginsI& aMargins = getRootMargins();
22
+    const StMarginsI& aRootMargins = getRootMargins();
23
     StMarginsI aButtonMargins;
24
     const IconSize anIconSize = scaleIcon(32, aButtonMargins);
25
-    /*myBtnPlayList = new StGLTextureButton(this, -aMargins.right - scale(8 + 8 + 32), -aMargins.bottom - scale(8),
26
-                                          StGLCorner(ST_VCORNER_BOTTOM, ST_HCORNER_RIGHT));
27
-    myBtnPlayList->setTexturePath(iconTexture(stCString("playList"), anIconSize));
28
-    myBtnPlayList->changeMargins() = aButtonMargins;*/
29
+    const int      anIconStep = scale(32);
30
 
31
-    // fullscreen button
32
+    myPanelBottom = new StGLContainer(this, aRootMargins.left, -aRootMargins.bottom, StGLCorner(ST_VCORNER_BOTTOM, ST_HCORNER_LEFT), scale(4096), scale(32));
33
+    int aBottomBarNbRight = 0;
34
+    const int aRight  = -scale(8);
35
+    const int aBottom = -scale(8);
36
     if(myWindow->hasFullscreenMode()) {
37
-        myBtnFull = new StGLTextureButton(this, -aMargins.right - scale(8), -aMargins.bottom - scale(8),
38
-                                          StGLCorner(ST_VCORNER_BOTTOM, ST_HCORNER_RIGHT));
39
-        myBtnFull->signals.onBtnClick.connect(myPlugin->params.isFullscreen.operator->(), &StBoolParam::doReverse);
40
-        myBtnFull->setTexturePath(iconTexture(stCString("fullScreen"), anIconSize));
41
+        myBtnFull = new StGLCheckboxTextured(myPanelBottom, myPlugin->params.isFullscreen,
42
+                                             iconTexture(stCString("actionVideoFullscreenOff"), anIconSize),
43
+                                             iconTexture(stCString("actionVideoFullscreenOn"),  anIconSize),
44
+                                             (aBottomBarNbRight++) * (-anIconStep) + aRight, aBottom,
45
+                                             StGLCorner(ST_VCORNER_TOP, ST_HCORNER_RIGHT));
46
+        myBtnFull->setDrawShadow(true);
47
+        myBtnFull->setFalseOpacity(1.0f);
48
         myBtnFull->changeMargins() = aButtonMargins;
49
     }
50
 
51
+    myBtnList = new StGLCheckboxTextured(myPanelBottom, myPlugin->params.ToShowPlayList,
52
+                                         iconTexture(stCString("actionVideoPlaylistOff"), anIconSize),
53
+                                         iconTexture(stCString("actionVideoPlaylist"),    anIconSize),
54
+                                         (aBottomBarNbRight++) * (-anIconStep) + aRight, aBottom,
55
+                                         StGLCorner(ST_VCORNER_TOP, ST_HCORNER_RIGHT));
56
+    myBtnList->setDrawShadow(true);
57
+    myBtnList->changeMargins() = aButtonMargins;
58
+
59
     myDescr = new StGLDescription(this);
60
 
61
+    myPlayList = new StGLPlayList(this, thePlayList);
62
+    myPlayList->setCorner(StGLCorner(ST_VCORNER_TOP, ST_HCORNER_RIGHT));
63
+    myPlayList->changeFitMargins().top    = scale(110);
64
+    myPlayList->changeFitMargins().bottom = scale(110);
65
+    //myPlayList->changeMargins().bottom    = scale(32);
66
+    myPlayList->setOpacity(myPlugin->params.ToShowPlayList->getValue() ? 1.0f : 0.0f, false);
67
+    myPlayList->signals.onOpenItem = stSlot(myPlugin, &StImageViewer::doFileNext);
68
+
69
     // create Main menu
70
     createMainMenu();
71
 }
72
@@ -387,7 +407,7 @@
73
     StGLMenu* aMenu = new StGLMenu(this, 0, 0, StGLMenu::MENU_VERTICAL);
74
 
75
     const StGLVec3 aBlack(0.0f, 0.0f, 0.0f);
76
-    const StGLVec3 aGreen(0.4f, 0.8f, 0.4f);
77
+    const StGLVec3 aGreen(0.0f, 0.6f, 0.4f);
78
     const StGLVec3 aRed  (1.0f, 0.0f, 0.0f);
79
 
80
     aMenu->addItem(tr(MENU_VIEW_ADJUST_RESET), myPlugin->getAction(StImageViewer::Action_ImageAdjustReset))
81
@@ -799,10 +819,18 @@
82
     return aMenu;
83
 }
84
 
85
-void StImageViewerGUI::createMobileUI() {
86
+void StImageViewerGUI::createMobileUI(const StHandle<StPlayList>& thePlayList) {
87
     createMobileUpperToolbar();
88
     createMobileBottomToolbar();
89
 
90
+    myPlayList = new StGLPlayList(this, thePlayList);
91
+    myPlayList->setCorner(StGLCorner(ST_VCORNER_TOP, ST_HCORNER_RIGHT));
92
+    myPlayList->changeFitMargins().top    = scale(56);
93
+    myPlayList->changeFitMargins().bottom = scale(100);
94
+    //myPlayList->changeMargins().bottom    = scale(56);
95
+    myPlayList->setOpacity(myPlugin->params.ToShowPlayList->getValue() ? 1.0f : 0.0f, false);
96
+    myPlayList->signals.onOpenItem = stSlot(myPlugin, &StImageViewer::doFileNext);
97
+
98
     if(myPlugin->params.ToShowFps->getValue()) {
99
         myFpsWidget = new StGLFpsLabel(this);
100
     }
101
@@ -925,6 +953,14 @@
102
     aBtnZoomOut->setDrawShadow(true);
103
     aBtnZoomOut->setUserData(StImageViewer::Action_StereoParamsBegin + StGLImageRegion::Action_ScaleOut);
104
     aBtnZoomOut->signals.onBtnHold += stSlot(this, &StImageViewerGUI::doAction);
105
+
106
+    myBtnList = new StGLCheckboxTextured(myPanelBottom, myPlugin->params.ToShowPlayList,
107
+                                         iconTexture(stCString("actionVideoPlaylistOff"), anIconSize),
108
+                                         iconTexture(stCString("actionVideoPlaylist"),    anIconSize),
109
+                                         (aBtnIter++) * (-anIconStep), 0,
110
+                                         StGLCorner(ST_VCORNER_TOP, ST_HCORNER_RIGHT));
111
+    myBtnList->setDrawShadow(true);
112
+    myBtnList->changeMargins() = aButtonMargins;
113
 }
114
 
115
 void StImageViewerGUI::doOpenFile(const size_t ) {
116
@@ -935,8 +971,15 @@
117
 
118
     StGLOpenFile* aDialog = new StGLOpenFile(this, tr(DIALOG_OPEN_FILE), tr(BUTTON_CLOSE));
119
     aDialog->setMimeList(myPlugin->myLoader->getMimeList());
120
+#if defined(_WIN32)
121
+    //
122
+#else
123
+    aDialog->addHotItem("/", "Root");
124
+#endif
125
+    aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_SdCard));
126
     aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Downloads));
127
     aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Pictures));
128
+    aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Photos));
129
     aDialog->signals.onFileSelected = stSlot(myPlugin, &StImageViewer::doOpen1FileFromGui);
130
 
131
     if(myPlugin->params.lastFolder.isEmpty()) {
132
@@ -978,11 +1021,13 @@
133
     anItem = aMenu->addItem("Slideshow", myPlugin->getAction(StImageViewer::Action_SlideShow));
134
     anItem->setIcon(stCMenuIcon("actionSlideShow"));
135
     aMenu->stglInit();
136
+    setFocus(aMenu);
137
 }
138
 
139
 StImageViewerGUI::StImageViewerGUI(StImageViewer*  thePlugin,
140
                                    StWindow*       theWindow,
141
                                    StTranslations* theLangMap,
142
+                                   const StHandle<StPlayList>&       thePlayList,
143
                                    const StHandle<StGLTextureQueue>& theTextureQueue)
144
 : StGLRootWidget(thePlugin->myResMgr),
145
   myPlugin(thePlugin),
146
@@ -993,6 +1038,7 @@
147
   myImage(NULL),
148
   myDescr(NULL),
149
   myMsgStack(NULL),
150
+  myPlayList(NULL),
151
   //
152
   myMenuRoot(NULL),
153
   //
154
@@ -1005,7 +1051,7 @@
155
   myBtnSwapLR(NULL),
156
   myBtnPanorama(NULL),
157
   myBtnSrcFrmt(NULL),
158
-  myBtnPlayList(NULL),
159
+  myBtnList(NULL),
160
   myBtnFull(NULL),
161
   //
162
   myFpsWidget(NULL),
163
@@ -1035,9 +1081,9 @@
164
     myImage->params.ViewMode->signals.onChanged += stSlot(myPlugin, &StImageViewer::doSwitchViewMode);
165
 
166
     if(isMobile()) {
167
-        createMobileUI();
168
+        createMobileUI(thePlayList);
169
     } else {
170
-        createDesktopUI();
171
+        createDesktopUI(thePlayList);
172
     }
173
 
174
     myMsgStack = new StGLMsgStack(this, myPlugin->getMessagesQueue());
175
@@ -1080,22 +1126,26 @@
176
 }
177
 
178
 void StImageViewerGUI::setVisibility(const StPointD_t& theCursor,
179
-                                     bool              isMouseActive,
180
                                      bool              toForceHide) {
181
-    const bool toShowToolbar  = !myIsMinimalGUI
182
-                             &&  myPlugin->params.ToShowToolbar->getValue();
183
-    const bool hasUpperPanel  =  toShowToolbar
184
+    const bool toShowPlayList = myPlugin->params.ToShowPlayList->getValue();
185
+    const bool hasMainMenu    =  myPlugin->params.ToShowMenu->getValue()
186
+                             &&  myMenuRoot != NULL;
187
+    const bool hasUpperPanel  = !myIsMinimalGUI
188
+                             &&  myPlugin->params.ToShowTopbar->getValue()
189
                              &&  myPanelUpper  != NULL;
190
-    const bool hasBottomPanel =  toShowToolbar
191
+    const bool hasBottomPanel = !myIsMinimalGUI
192
                              &&  myPanelBottom != NULL;
193
+    const bool isMouseActive  = myWindow->isMouseMoved();
194
 
195
     StHandle<StStereoParams> aParams = myImage->getSource();
196
+    const double aStillTime = myVisibilityTimer.getElapsedTime();
197
     myIsVisibleGUI = isMouseActive
198
         || aParams.isNull()
199
-        || myVisibilityTimer.getElapsedTime() < 2.0
200
+        || aStillTime < 2.0
201
         || (hasUpperPanel  && myPanelUpper ->isPointIn(theCursor))
202
         || (hasBottomPanel && myPanelBottom->isPointIn(theCursor))
203
-        || (myMenuRoot != NULL && myMenuRoot->isActive());
204
+        || (myPlayList != NULL && toShowPlayList && myPlayList->isPointIn(theCursor))
205
+        || (hasMainMenu    && myMenuRoot->isActive());
206
 
207
     if(isMouseActive) {
208
         myVisibilityTimer.restart();
209
@@ -1104,22 +1154,36 @@
210
     const float anOpacity = (float )myVisLerp.perform(toShowAll, toForceHide);
211
 
212
     if(myMenuRoot != NULL) {
213
-        myMenuRoot->setOpacity(anOpacity, true);
214
+        myMenuRoot->setOpacity(hasMainMenu ? anOpacity : 0.0f, true);
215
     }
216
-
217
     if(myPanelUpper != NULL) {
218
         myPanelUpper->setOpacity(hasUpperPanel ? anOpacity : 0.0f, true);
219
     }
220
     if(myPanelBottom != NULL) {
221
         myPanelBottom->setOpacity(hasBottomPanel ? anOpacity : 0.0f, true);
222
     }
223
-    if(myBtnPlayList != NULL) {
224
-        //myBtnPlayList->setOpacity(hasBottomPanel ? anOpacity : 0.0f, false);
225
+    if(myPlayList != NULL
226
+    && toShowPlayList) {
227
+        myPlayList->setOpacity(anOpacity, true);
228
     }
229
     if(myBtnFull != NULL) {
230
+        if(myIsMinimalGUI
231
+        && myPanelBottom != NULL) {
232
+            myPanelBottom->setOpacity(1.0f, false);
233
+        }
234
         myBtnFull->setOpacity(myIsMinimalGUI ? 1.0f : anOpacity, false);
235
     }
236
 
237
+    const StPlayList::CurrentPosition aCurrPos = myPlugin->myLoader->getPlayList().getCurrentPosition();
238
+    if(myBtnPrev != NULL) {
239
+        myBtnPrev->setOpacityScale(aCurrPos == StPlayList::CurrentPosition_Middle
240
+                                || aCurrPos == StPlayList::CurrentPosition_Last ? 1.0f : 0.5f);
241
+    }
242
+    if(myBtnNext != NULL) {
243
+        myBtnNext->setOpacityScale(aCurrPos == StPlayList::CurrentPosition_Middle
244
+                                || aCurrPos == StPlayList::CurrentPosition_First ? 1.0f : 0.5f);
245
+    }
246
+
247
     StFormat aSrcFormat = (StFormat )myPlugin->params.srcFormat->getValue();
248
     if(aSrcFormat == StFormat_AUTO
249
     && !aParams.isNull()) {
250
@@ -1157,7 +1221,7 @@
251
     myImage->setDeviceOrientation(StGLQuaternion((float )aQ.x(), (float )aQ.y(), (float )aQ.z(), (float )aQ.w()));
252
 
253
     if(myDescr != NULL) {
254
-        myDescr->setOpacity(1.0f, true);
255
+        bool wasEmpty = myDescr->getText().isEmpty();
256
         if(::isPointIn(myBtnOpen, theCursor)) {
257
             myDescr->setText(tr(IMAGE_OPEN));
258
         } else if(::isPointIn(myBtnPrev, theCursor)) {
259
@@ -1169,7 +1233,7 @@
260
         } else if(::isPointIn(myBtnSwapLR, theCursor)) {
261
             size_t aLngId = myImage->params.swapLR->getValue() ? SWAP_LR_ON : SWAP_LR_OFF;
262
             myDescr->setText(tr(aLngId));
263
-        } else if(::isPointIn(myBtnPlayList, theCursor)) {
264
+        } else if(::isPointIn(myBtnList, theCursor)) {
265
             myDescr->setText(tr(PLAYLIST));
266
         } else if(::isPointIn(myBtnFull, theCursor)) {
267
             myDescr->setText(tr(FULLSCREEN));
268
@@ -1184,8 +1248,19 @@
269
             }
270
             myDescr->setText(tr(MENU_VIEW_PANORAMA) + "\n" + tr(aTrPano));
271
         } else {
272
-            myDescr->setOpacity(0.0f, true);
273
+            myDescr->setText("");
274
+        }
275
+
276
+        if(wasEmpty
277
+        && aStillTime < 1.0) {
278
+            myDescr->setText("");
279
+        } else if(getFocus() != NULL
280
+               || (myMenuRoot != NULL && myMenuRoot->isActive())) {
281
+            // hide within active dialog - should be replaced by z-layer check
282
+            myDescr->setText("");
283
         }
284
+
285
+        myDescr->setOpacity(!myDescr->getText().isEmpty() ? 1.0f : 0.0f, true);
286
     }
287
 }
288
 
289
sview-15_10.tar.gz/StImageViewer/StImageViewerGUI.h -> sview-15_11.tar.gz/StImageViewer/StImageViewerGUI.h Changed
63
 
1
@@ -37,6 +37,8 @@
2
 class StGLMsgStack;
3
 class StGLFpsLabel;
4
 class StGLTable;
5
+class StGLPlayList;
6
+class StPlayList;
7
 class StWindow;
8
 
9
 /**
10
@@ -89,6 +91,7 @@
11
     ST_LOCAL StImageViewerGUI(StImageViewer*  thePlugin,
12
                               StWindow*       theWindow,
13
                               StTranslations* theLangMap,
14
+                              const StHandle<StPlayList>&       thePlayList,
15
                               const StHandle<StGLTextureQueue>& theTextureQueue);
16
     ST_LOCAL virtual ~StImageViewerGUI();
17
     ST_LOCAL virtual void stglUpdate(const StPointD_t& pointZo);
18
@@ -96,7 +99,6 @@
19
     ST_LOCAL virtual void stglDraw(unsigned int theView);
20
 
21
     ST_LOCAL void setVisibility(const StPointD_t& theCursor,
22
-                                bool              isMouseActive,
23
                                 bool              toForceHide);
24
 
25
         public:
26
@@ -131,7 +133,7 @@
27
     /**
28
      * Create normal (desktop) interface.
29
      */
30
-    ST_LOCAL void createDesktopUI();
31
+    ST_LOCAL void createDesktopUI(const StHandle<StPlayList>& thePlayList);
32
 
33
     /**
34
      * Create upper tool-bar.
35
@@ -162,7 +164,7 @@
36
     /**
37
      * Create mobile interface.
38
      */
39
-    ST_LOCAL void      createMobileUI();
40
+    ST_LOCAL void      createMobileUI(const StHandle<StPlayList>& thePlayList);
41
 
42
     ST_LOCAL void      createMobileUpperToolbar();
43
     ST_LOCAL void      createMobileBottomToolbar();
44
@@ -201,6 +203,7 @@
45
     StGLImageRegion*    myImage;            //!< the main image
46
     StGLDescription*    myDescr;            //!< description text shown near mouse cursor
47
     StGLMsgStack*       myMsgStack;         //!< messages stack
48
+    StGLPlayList*       myPlayList;
49
 
50
     StGLMenu*           myMenuRoot;         //!< main menu
51
 
52
@@ -213,8 +216,8 @@
53
     StGLTextureButton*  myBtnSwapLR;
54
     StGLCheckboxTextured* myBtnPanorama;
55
     StGLTextureButton*  myBtnSrcFrmt;
56
-    StGLTextureButton*  myBtnPlayList;
57
-    StGLTextureButton*  myBtnFull;
58
+    StGLTextureButton*  myBtnList;
59
+    StGLCheckboxTextured* myBtnFull;
60
     StGLFpsLabel*       myFpsWidget;
61
 
62
     StGLTable*          myHKeysTable;
63
sview-15_10.tar.gz/StImageViewer/lang/chinese/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/chinese/StImageViewer.lng Changed
337
 
1
@@ -1,169 +1,169 @@
2
 # Chinese translation file for StImageViewer program
3
 # @author YSC
4
 --------
5
-1000="上一图片"
6
-1001="下一图片"
7
-1002="切换左/右"
8
-1003="还原切换左/右"
9
-1004="立体格式:"
10
-1015="打开另一图片"
11
-1028="显示/隐藏播放列表"
12
-1029="切换\n全屏/窗口模式"
13
-1100="文件"
14
-1101="打开图片->>"
15
-1102="另存为->>"
16
-1103="立体格式->>"
17
-1104="图片信息"
18
-1109="退出"
19
-1110="单一立体文件"
20
-1111="左+右文件"
21
-1130="自动侦测"
22
-1131="单画面"
23
-1132="对眼"
24
-1133="平行配对"
25
-1134="上/下 (右/左)"
26
-1135="上/下 (左/右)"
27
-1136="交错"
28
-1137="分色红/青"
29
-1138="分色绿/红+蓝"
30
-1139="分色黄/蓝"
31
-1142="双流"
32
-1200="查看"
33
-1201="立体输出->>"
34
-1202="全屏"
35
-1203="重置"
36
-1204="切换左/右"
37
-1205="显示比例->>"
38
-1206="光滑过滤->>"
39
-1207="图像调节->>"
40
-1208="表面处理->>"
41
-1210="立体"
42
-1211="左画面"
43
-1212="右画面"
44
-1213="平行配对"
45
-1214="对眼"
46
-1250="源格式"
47
-1251="重启维持"
48
-?1252="Heal anamorphic 1080p/720p"
49
-1260="接近"
50
-1261="线状"
51
-1270="重置默认"
52
-1271="亮度"
53
-1272="饱和度"
54
-1273="伽马"
55
-1280="平面"
56
-1281="球面"
57
-1282="圆柱"
58
-?1283="Cubemap"
59
-?1285="Track orientation"
60
-?1286="Track orientation (poor)"
61
-1400="改变设备->>"
62
-1401="关于插件..."
63
-1402="显示 FPS"
64
-1403="同步"
65
-1500="帮助"
66
-1501="关于..."
67
-1502="更新检查->>"
68
-1503="许可"
69
-1504="语言 (Language)"
70
-1506="用户提示"
71
-1508="关于系统"
72
-1509="界面大小->>"
73
-?1510="Hotkeys"
74
-?1511="Settings"
75
-1520="现在"
76
-1521="每天"
77
-1522="每周"
78
-1523="每年"
79
-1524="绝不"
80
-1590="小"
81
-1591="正常"
82
-1592="大"
83
-1593="强制高解析 2X"
84
-2000="选择图片文件打开"
85
-2001="选择左画面图片打开"
86
-2002="选择右画面图片文件打开"
87
-2003="图像信息"
88
-2004="信息未获得"
89
-2005="文件删除"
90
-2006="确定完全移除吗?"
91
-2007="激活解码器:"
92
-2008="确定将元数据保存到文件吗?"
93
-2009="元数据只能保存到JPEG文件."
94
-2010="选择保存快照位置"
95
-2011="什么也没有保存!"
96
-2012="快照不为空!"
97
-?2013="Assign new Hot Key for action\n<i>{0}</i>"
98
-?2014="Conflicts with: <i>{0}</i>"
99
-3000="sView - Image Viewer"
100
-3001="版本"
101
-3002="Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
102
-3003="官网www.sview.ru有新版本软件.\n请升级."
103
-3004="系统信息"
104
-4000="关闭"
105
-4001="取消"
106
-4006="保存"
107
-4007="删除"
108
-?4008="Default"
109
-?4009="Defaults"
110
-?4010="Assign"
111
-5000="[左]"
112
-5001="[右]"
113
-5002="文件名字(s)"
114
-5003="视频大小"
115
-5004="装载时间"
116
-5005="ms"
117
-5006="像素比率"
118
-5007="像素格式"
119
-5008="(不存储在元数据)"
120
-5009="(不匹配的元数据)"
121
-5011="(不存储在元数据中,\n但检测到文件名称)"
122
-5100="JPEG 说明"
123
-5101="JPS 说明"
124
-5200="相机生产商"
125
-5201="相机型号"
126
-5202="用户说明"
127
-5203="图像时间戳"
128
-6000="切换\n全屏/窗口模式"
129
-6001="显示 FPS"
130
-6002="立体格式: 自动侦测"
131
-6003="立体格式: 单画面"
132
-6004="立体格式: 上/下"
133
-6005="立体格式: 对眼"
134
-?6006="Show file info"
135
-?6007="Playlist - Go to the first item"
136
-?6008="Playlist - Go to the last item"
137
-6009="播放上一文件"
138
-6010="播放下一文件"
139
-?6011="Playlist - Start/stop slideshow"
140
-6012="另存为 PNG"
141
-6013="另存为 JPEG"
142
-?6014="Save file metadata"
143
-?6015="Delete the file from file system"
144
-?6016="Reset image adjustment"
145
-?6017="Reset image position"
146
-6018="切换左/右"
147
-?6019="Gamma correction - decrease"
148
-?6020="Gamma correction - increase"
149
-?6021="DX separation - decrease"
150
-?6022="DX separation - increase"
151
-?6023="DY separation - decrease"
152
-?6024="DY separation - increase"
153
-?6025="Angular separation - decrease"
154
-?6026="Angular separation - increase"
155
-?6027="Rotate 90 degrees counterclockwise"
156
-?6028="Rotate 90 degrees clockwise"
157
-?6029="Rotate counterclockwise"
158
-?6030="Rotate clockwise"
159
-?6031="Select next view mode"
160
-?6032="Panning - navigate to the left"
161
-?6033="Panning - navigate to the right"
162
-?6034="Panning - navigate to the top"
163
-?6035="Panning - navigate to the bottom"
164
-?6036="Scale - increment"
165
-?6037="Scale - decrement"
166
-?6038="Y Rotation - left"
167
-?6039="Y Rotation - right"
168
-?6040="X Rotation - up"
169
-?6041="X Rotation - down"
170
-?6042="Enable/disable panorama mode"
171
+1000=上一图片
172
+1001=下一图片
173
+1002=切换左/右
174
+1003=还原切换左/右
175
+1004=立体格式:
176
+1015=打开另一图片
177
+1028=显示/隐藏播放列表
178
+1029=切换\n全屏/窗口模式
179
+1100=文件
180
+1101=打开图片
181
+1102=另存为
182
+1103=立体格式
183
+1104=图片信息
184
+1109=退出
185
+1110=单一立体文件
186
+1111=左+右文件
187
+1130=自动侦测
188
+1131=单画面
189
+1132=对眼
190
+1133=平行配对
191
+1134=上/下 (右/左)
192
+1135=上/下 (左/右)
193
+1136=交错
194
+1137=分色红/青
195
+1138=分色绿/红+蓝
196
+1139=分色黄/蓝
197
+1142=双流
198
+1200=查看
199
+1201=立体输出
200
+1202=全屏
201
+1203=重置
202
+1204=切换左/右
203
+1205=显示比例
204
+1206=光滑过滤
205
+1207=图像调节
206
+1208=表面处理
207
+1210=立体
208
+1211=左画面
209
+1212=右画面
210
+1213=平行配对
211
+1214=对眼
212
+1250=源格式
213
+1251=重启维持
214
+?1252=Heal anamorphic 1080p/720p
215
+1260=接近
216
+1261=线状
217
+1270=重置默认
218
+1271=亮度
219
+1272=饱和度
220
+1273=伽马
221
+1280=平面
222
+1281=球面
223
+1282=圆柱
224
+?1283=Cubemap
225
+?1285=Track orientation
226
+?1286=Track orientation (poor)
227
+1400=改变设备
228
+1401=关于插件...
229
+1402=显示 FPS
230
+1403=同步
231
+1500=帮助
232
+1501=关于...
233
+1502=更新检查
234
+1503=许可
235
+1504=语言 (Language)
236
+1506=用户提示
237
+1508=关于系统
238
+1509=界面大小
239
+?1510=Hotkeys
240
+?1511=Settings
241
+1520=现在
242
+1521=每天
243
+1522=每周
244
+1523=每年
245
+1524=绝不
246
+1590=小
247
+1591=正常
248
+1592=大
249
+1593=强制高解析 2X
250
+2000=选择图片文件打开
251
+2001=选择左画面图片打开
252
+2002=选择右画面图片文件打开
253
+2003=图像信息
254
+2004=信息未获得
255
+2005=文件删除
256
+2006=确定完全移除吗?
257
+2007=激活解码器:
258
+2008=确定将元数据保存到文件吗?
259
+2009=元数据只能保存到JPEG文件.
260
+2010=选择保存快照位置
261
+2011=什么也没有保存!
262
+2012=快照不为空!
263
+?2013=Assign new Hot Key for action\n<i>{0}</i>
264
+?2014=Conflicts with: <i>{0}</i>
265
+3000=sView - Image Viewer
266
+3001=版本
267
+3002=Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
268
+3003=官网www.sview.ru有新版本软件.\n请升级.
269
+3004=系统信息
270
+4000=关闭
271
+4001=取消
272
+4006=保存
273
+4007=删除
274
+?4008=Default
275
+?4009=Defaults
276
+?4010=Assign
277
+5000=[左]
278
+5001=[右]
279
+5002=文件名字(s)
280
+5003=视频大小
281
+5004=装载时间
282
+5005=ms
283
+5006=像素比率
284
+5007=像素格式
285
+5008=(不存储在元数据)
286
+5009=(不匹配的元数据)
287
+5011=(不存储在元数据中,\n但检测到文件名称)
288
+5100=JPEG 说明
289
+5101=JPS 说明
290
+5200=相机生产商
291
+5201=相机型号
292
+5202=用户说明
293
+5203=图像时间戳
294
+6000=切换\n全屏/窗口模式
295
+6001=显示 FPS
296
+6002=立体格式: 自动侦测
297
+6003=立体格式: 单画面
298
+6004=立体格式: 上/下
299
+6005=立体格式: 对眼
300
+?6006=Show file info
301
+?6007=Playlist - Go to the first item
302
+?6008=Playlist - Go to the last item
303
+6009=播放上一文件
304
+6010=播放下一文件
305
+?6011=Playlist - Start/stop slideshow
306
+6012=另存为 PNG
307
+6013=另存为 JPEG
308
+?6014=Save file metadata
309
+?6015=Delete the file from file system
310
+?6016=Reset image adjustment
311
+?6017=Reset image position
312
+6018=切换左/右
313
+?6019=Gamma correction - decrease
314
+?6020=Gamma correction - increase
315
+?6021=DX separation - decrease
316
+?6022=DX separation - increase
317
+?6023=DY separation - decrease
318
+?6024=DY separation - increase
319
+?6025=Angular separation - decrease
320
+?6026=Angular separation - increase
321
+?6027=Rotate 90 degrees counterclockwise
322
+?6028=Rotate 90 degrees clockwise
323
+?6029=Rotate counterclockwise
324
+?6030=Rotate clockwise
325
+?6031=Select next view mode
326
+?6032=Panning - navigate to the left
327
+?6033=Panning - navigate to the right
328
+?6034=Panning - navigate to the top
329
+?6035=Panning - navigate to the bottom
330
+?6036=Scale - increment
331
+?6037=Scale - decrement
332
+?6038=Y Rotation - left
333
+?6039=Y Rotation - right
334
+?6040=X Rotation - up
335
+?6041=X Rotation - down
336
+?6042=Enable/disable panorama mode
337
sview-15_10.tar.gz/StImageViewer/lang/english/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/english/StImageViewer.lng Changed
337
 
1
@@ -1,169 +1,169 @@
2
 # English translation file for StImageViewer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Previous image"
6
-1001="Next image"
7
-1002="Swap Left/Right"
8
-1003="UnSwap Left/Right"
9
-1004="Stereoscopic format:"
10
-1015="Open another image"
11
-1028="Show/Hide playlist"
12
-1029="Switch\nfullscreen/windowed"
13
-1100="Media"
14
-1101="Open Image..."
15
-1102="Save Image As..."
16
-1103="Stereoscopic format"
17
-1104="Image info"
18
-1109="Quit"
19
-1110="From One file"
20
-1111="Left+Right files"
21
-1130="Source"
22
-1131="Mono"
23
-1132="Cross-eyed"
24
-1133="Parallel Pair"
25
-1134="Over/Under (R/L)"
26
-1135="Over/Under (L/R)"
27
-1136="Interlaced"
28
-1137="Anaglyph Red/Cyan"
29
-1138="Anaglyph Green/Red+Blue"
30
-1139="Anaglyph Yellow/Blue"
31
-1142="2 Streams"
32
-1200="View"
33
-1201="Stereo Output"
34
-1202="Fullscreen"
35
-1203="Reset"
36
-1204="Swap Left/Right"
37
-1205="Display Ratio"
38
-1206="Smooth Filter"
39
-1207="Image Adjust"
40
-1208="Panorama"
41
-1210="Stereo"
42
-1211="Left View"
43
-1212="Right View"
44
-1213="Parallel Pair"
45
-1214="Cross-eyed"
46
-1250="Source"
47
-1251="Keep on restart"
48
-1252="Heal anamorphic 1080p/720p"
49
-1260="Nearest"
50
-1261="Linear"
51
-1270="Reset to defaults"
52
-1271="Brightness"
53
-1272="Saturation"
54
-1273="Gamma"
55
-1280="Off"
56
-1281="Sphere"
57
-1282="Cylinder"
58
-1283="Cubemap"
59
-1285="Track orientation"
60
-1286="Track orientation (poor)"
61
-1400="Change device"
62
-1401="About Plugin..."
63
-1402="Show FPS"
64
-1403="VSync"
65
-1500="Help"
66
-1501="About..."
67
-1502="Check for updates"
68
-1503="License text"
69
-1504="Language"
70
-1506="User tips"
71
-1508="About system"
72
-1509="Interface Scale"
73
-1510="Hotkeys"
74
-1511="Settings"
75
-1520="Now"
76
-1521="Each day"
77
-1522="Each week"
78
-1523="Each year"
79
-1524="Never"
80
-1590="Small"
81
-1591="Normal"
82
-1592="Big"
83
-1593="Force HiDPI 2X"
84
-2000="Choose the image file to open"
85
-2001="Choose LEFT image file to open"
86
-2002="Choose RIGHT image file to open"
87
-2003="Image Info"
88
-2004="Information is unavailable"
89
-2005="File deletion"
90
-2006="Do you really want to completely remove this file?"
91
-2007="File metadata saving"
92
-2008="Do you really want to save metadata to the file?"
93
-2009="Metadata can be saved only into JPEG files."
94
-2010="Choose location to save snapshot"
95
-2011="Nothing to save!"
96
-2012="Snapshot not available!"
97
-2013="Assign new Hot Key for action\n<i>{0}</i>"
98
-2014="Conflicts with: <i>{0}</i>"
99
-3000="sView - Image Viewer"
100
-3001="version"
101
-3002="Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
102
-3003="A new version of sView is available on the official site www.sview.ru.\nPlease update your program."
103
-3004="System Info"
104
-4000="Close"
105
-4001="Cancel"
106
-4006="Save"
107
-4007="Delete"
108
-4008="Default"
109
-4009="Defaults"
110
-4010="Assign"
111
-5000="[left]"
112
-5001="[right]"
113
-5002="File name"
114
-5003="Dimensions"
115
-5004="Load time"
116
-5005="ms"
117
-5006="Pixel ratio"
118
-5007="Color model"
119
-5008="(does not stored in metadata)"
120
-5009="(does not match metadata)"
121
-5011="(does not stored in metadata,\nbut detected from file name)"
122
-5100="JPEG Comment"
123
-5101="JPS Comment"
124
-5200="Camera Maker"
125
-5201="Camera Model"
126
-5202="User Comment"
127
-5203="Image timestamp"
128
-6000="Switch fullscreen/windowed"
129
-6001="Show/hide FPS meter"
130
-6002="Stereo format - Auto"
131
-6003="Stereo format - Mono"
132
-6004="Stereo format - Over/Under"
133
-6005="Stereo format - Side by side"
134
-6006="Show file info"
135
-6007="Playlist - Go to the first item"
136
-6008="Playlist - Go to the last item"
137
-6009="Playlist - Go to the previous item"
138
-6010="Playlist - Go to the next item"
139
-6011="Playlist - Start/stop slideshow"
140
-6012="Save in PNG format"
141
-6013="Save in JPEG format"
142
-6014="Save file metadata"
143
-6015="Delete the file from file system"
144
-6016="Reset image adjustment"
145
-6017="Reset image position"
146
-6018="Swap Left/Right"
147
-6019="Gamma correction - decrease"
148
-6020="Gamma correction - increase"
149
-6021="DX separation - decrease"
150
-6022="DX separation - increase"
151
-6023="DY separation - decrease"
152
-6024="DY separation - increase"
153
-6025="Angular separation - decrease"
154
-6026="Angular separation - increase"
155
-6027="Rotate 90 degrees counterclockwise"
156
-6028="Rotate 90 degrees clockwise"
157
-6029="Rotate counterclockwise"
158
-6030="Rotate clockwise"
159
-6031="Select next view mode"
160
-6032="Panning - navigate to the left"
161
-6033="Panning - navigate to the right"
162
-6034="Panning - navigate to the top"
163
-6035="Panning - navigate to the bottom"
164
-6036="Scale - increment"
165
-6037="Scale - decrement"
166
-6038="Y Rotation - left"
167
-6039="Y Rotation - right"
168
-6040="X Rotation - up"
169
-6041="X Rotation - down"
170
-6042="Enable/disable panorama mode"
171
+1000=Previous image
172
+1001=Next image
173
+1002=Swap Left/Right
174
+1003=UnSwap Left/Right
175
+1004=Stereoscopic format:
176
+1015=Open another image
177
+1028=Show/Hide playlist
178
+1029=Switch\nfullscreen/windowed
179
+1100=Media
180
+1101=Open Image...
181
+1102=Save Image As...
182
+1103=Stereoscopic format
183
+1104=Image info
184
+1109=Quit
185
+1110=From One file
186
+1111=Left+Right files
187
+1130=Source
188
+1131=Mono
189
+1132=Cross-eyed
190
+1133=Parallel Pair
191
+1134=Over/Under (R/L)
192
+1135=Over/Under (L/R)
193
+1136=Interlaced
194
+1137=Anaglyph Red/Cyan
195
+1138=Anaglyph Green/Red+Blue
196
+1139=Anaglyph Yellow/Blue
197
+1142=2 Streams
198
+1200=View
199
+1201=Stereo Output
200
+1202=Fullscreen
201
+1203=Reset
202
+1204=Swap Left/Right
203
+1205=Display Ratio
204
+1206=Smooth Filter
205
+1207=Image Adjust
206
+1208=Panorama
207
+1210=Stereo
208
+1211=Left View
209
+1212=Right View
210
+1213=Parallel Pair
211
+1214=Cross-eyed
212
+1250=Source
213
+1251=Keep on restart
214
+1252=Heal anamorphic 1080p/720p
215
+1260=Nearest
216
+1261=Linear
217
+1270=Reset to defaults
218
+1271=Brightness
219
+1272=Saturation
220
+1273=Gamma
221
+1280=Off
222
+1281=Sphere
223
+1282=Cylinder
224
+1283=Cubemap
225
+1285=Track orientation
226
+1286=Track orientation (poor)
227
+1400=Change device
228
+1401=About Plugin...
229
+1402=Show FPS
230
+1403=VSync
231
+1500=Help
232
+1501=About...
233
+1502=Check for updates
234
+1503=License text
235
+1504=Language
236
+1506=User tips
237
+1508=About system
238
+1509=Interface Scale
239
+1510=Hotkeys
240
+1511=Settings
241
+1520=Now
242
+1521=Each day
243
+1522=Each week
244
+1523=Each year
245
+1524=Never
246
+1590=Small
247
+1591=Normal
248
+1592=Big
249
+1593=Force HiDPI 2X
250
+2000=Choose the image file to open
251
+2001=Choose LEFT image file to open
252
+2002=Choose RIGHT image file to open
253
+2003=Image Info
254
+2004=Information is unavailable
255
+2005=File deletion
256
+2006=Do you really want to completely remove this file?
257
+2007=File metadata saving
258
+2008=Do you really want to save metadata to the file?
259
+2009=Metadata can be saved only into JPEG files.
260
+2010=Choose location to save snapshot
261
+2011=Nothing to save!
262
+2012=Snapshot not available!
263
+2013=Assign new Hot Key for action\n<i>{0}</i>
264
+2014=Conflicts with: <i>{0}</i>
265
+3000=sView - Image Viewer
266
+3001=version
267
+3002=Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
268
+3003=A new version of sView is available on the official site www.sview.ru.\nPlease update your program.
269
+3004=System Info
270
+4000=Close
271
+4001=Cancel
272
+4006=Save
273
+4007=Delete
274
+4008=Default
275
+4009=Defaults
276
+4010=Assign
277
+5000=[left]
278
+5001=[right]
279
+5002=File name
280
+5003=Dimensions
281
+5004=Load time
282
+5005=ms
283
+5006=Pixel ratio
284
+5007=Color model
285
+5008=(does not stored in metadata)
286
+5009=(does not match metadata)
287
+5011=(does not stored in metadata,\nbut detected from file name)
288
+5100=JPEG Comment
289
+5101=JPS Comment
290
+5200=Camera Maker
291
+5201=Camera Model
292
+5202=User Comment
293
+5203=Image timestamp
294
+6000=Switch fullscreen/windowed
295
+6001=Show/hide FPS meter
296
+6002=Stereo format - Auto
297
+6003=Stereo format - Mono
298
+6004=Stereo format - Over/Under
299
+6005=Stereo format - Side by side
300
+6006=Show file info
301
+6007=Playlist - Go to the first item
302
+6008=Playlist - Go to the last item
303
+6009=Playlist - Go to the previous item
304
+6010=Playlist - Go to the next item
305
+6011=Playlist - Start/stop slideshow
306
+6012=Save in PNG format
307
+6013=Save in JPEG format
308
+6014=Save file metadata
309
+6015=Delete the file from file system
310
+6016=Reset image adjustment
311
+6017=Reset image position
312
+6018=Swap Left/Right
313
+6019=Gamma correction - decrease
314
+6020=Gamma correction - increase
315
+6021=DX separation - decrease
316
+6022=DX separation - increase
317
+6023=DY separation - decrease
318
+6024=DY separation - increase
319
+6025=Angular separation - decrease
320
+6026=Angular separation - increase
321
+6027=Rotate 90 degrees counterclockwise
322
+6028=Rotate 90 degrees clockwise
323
+6029=Rotate counterclockwise
324
+6030=Rotate clockwise
325
+6031=Select next view mode
326
+6032=Panning - navigate to the left
327
+6033=Panning - navigate to the right
328
+6034=Panning - navigate to the top
329
+6035=Panning - navigate to the bottom
330
+6036=Scale - increment
331
+6037=Scale - decrement
332
+6038=Y Rotation - left
333
+6039=Y Rotation - right
334
+6040=X Rotation - up
335
+6041=X Rotation - down
336
+6042=Enable/disable panorama mode
337
sview-15_10.tar.gz/StImageViewer/lang/french/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/french/StImageViewer.lng Changed
337
 
1
@@ -1,169 +1,169 @@
2
 # French translation file for StImageViewer program
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Image Précédente"
6
-1001="Image Suivante"
7
-1002="Gauche/Droite inversé"
8
-1003="Gauche/Droite normal"
9
-1004="Format entrée:"
10
-1015="Ouvre autre image"
11
-1028="Affiche/Masque playlist"
12
-1029="Bascule\Plein écran/fenêtre"
13
-1100="Média"
14
-1101="Ouvre Image..."
15
-1102="Enregistre Image Sous.."
16
-1103="Format Stéréo d'entrée"
17
-1104="Image info"
18
-1109="Quitter"
19
-1110="Depuis un fichier"
20
-1111="2 Fichiers Gauche+Droit"
21
-1130="Source"
22
-1131="Mono"
23
-1132="Cross-eyed"
24
-1133="Coté/Coté (SbS)"
25
-1134="Dessus/Dessous(D/G)"
26
-1135="Dessus/Dessous(G/D)"
27
-1136="Entrelacé"
28
-1137="Anaglyphe Rouge/Bleu"
29
-1138="Anaglyphe Vert/Magenta"
30
-1139="Anaglyphe Jaune/Bleu"
31
-1142="2 Streams"
32
-1200="Affichage"
33
-1201="Sortie Stéréo"
34
-1202="Plein Ecran"
35
-1203="Réinitialisation"
36
-1204="Inverser Gauche/Droite"
37
-1205="Ratio d'affichage"
38
-1206="Lissage antialiasing"
39
-1207="Réglage de l'image"
40
-1208="Panorama"
41
-1210="Stéréo"
42
-1211="Vue Gauche"
43
-1212="Vue Droite"
44
-1213="Coté/Coté (SbS)"
45
-1214="Cross-eyed"
46
-1250="Source"
47
-1251="Garder après redémarrage"
48
-?1252="Heal anamorphic 1080p/720p"
49
-1260="Plus proche"
50
-1261="Lineaire"
51
-1270="Rétablir par défaut"
52
-1271="Brightness"
53
-1272="Saturation"
54
-1273="Gamma"
55
-1280="Plan"
56
-1281="Sphère"
57
-1282="Cylindre"
58
-1283="Cubemap"
59
-?1285="Track orientation"
60
-?1286="Track orientation (poor)"
61
-1400="Changer la sortie"
62
-1401="A propos du Plugin..."
63
-1402="Voir I/S"
64
-1403="Synchro Vert."
65
-1500="Aide"
66
-1501="A Propos..."
67
-1502="Vérifier nouvelle version"
68
-1503="Texte de la Licence"
69
-1504="Language"
70
-1506="Conseils d'utilisation"
71
-?1508="About system"
72
-?1509="Scale Interface"
73
-1510="Raccourcis"
74
-1511="Paramètres"
75
-1520="Maintenant"
76
-1521="Chaque Jour"
77
-1522="Chaque Mois"
78
-1523="Chaque Année"
79
-1524="Jamais"
80
-1590="Petit"
81
-1591="Normal"
82
-1592="Gros"
83
-1593="Force HiDPI 2X"
84
-2000="Choix du fichier image à ouvrir"
85
-2001="Choix du fichier image Gauche à ouvrir"
86
-2002="Choix du fichier image Droite à ouvrir"
87
-2003="Info de l'image"
88
-2004="L'information est indisponible"
89
-?2005="File deletion"
90
-?2006="Do you really want to completely remove this file?"
91
-?2007="File metadata saving"
92
-?2008="Do you really want to save metadata to the file?"
93
-?2009="Metadata can be saved only into JPEG files."
94
-2010="Emplacement de la capture écran"
95
-2011="Rien à enregistrer!"
96
-2012="Capture non disponible!"
97
-2013="Changement raccourcu clavier pour\n<i>{0}</i>"
98
-?2014="Conflicts with: <i>{0}</i>"
99
-3000="sView - Image Viewer"
100
-3001="version"
101
-3002="Image viewer vous permet d'ouvrir des images stéréoscopiques en formats JPEG, PNG, MPO.\n © {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis program is distributed under GPL3.0"
102
-3003="Une nouvelle version de sView est disponible sur le site officiel www.sview.ru.\nSVP, mettez votre programme à jour."
103
-3004="Informations sur le système"
104
-4000="Fermer"
105
-4001="Annuler"
106
-4006="Enregistre"
107
-4007="Supprimer"
108
-?4008="Default"
109
-?4009="Defaults"
110
-4010="Affecter"
111
-5000="[gauche]"
112
-5001="[droite]"
113
-5002="Nom de fichier"
114
-5003="Résolution"
115
-5004="Temps de démarrage"
116
-5005="ms"
117
-5006="Pixel ratio"
118
-5007="Modèle colorimétrique"
119
-?5008="(does not stored in metadata)"
120
-?5009="(does not match metadata)"
121
-?5011="(does not stored in metadata,\nbut detected from file name)"
122
-5100="JPEG commentaire"
123
-5101="JPS commentaire"
124
-5200="Camera Maker"
125
-5201="Camera Model"
126
-5202="User Comment"
127
-5203="Image timestamp"
128
-6000="Bascule\Plein écran/fenêtre"
129
-6001="Voir I/S"
130
-6002="Format Stéréo d'entrée - Auto-détection"
131
-6003="Format Stéréo d'entrée - Mono"
132
-6004="Format Stéréo d'entrée - Dessus/Dessous"
133
-6005="Format Stéréo d'entrée - Coté/Coté (SbS)"
134
-6006="Afficher les informations sur le fichier"
135
-6007="Playlist - Aller au premier élément"
136
-6008="Playlist - Aller au dernier élément"
137
-6009="Playlist - Aller à l'élément précédent"
138
-6010="Playlist - Aller à l'élément suivant"
139
-6011="Playlist - Lancer / arrêter le diaporama"
140
-6012="Enregistrer au format PNG"
141
-6013="Enregistrer au format JPEG"
142
-6014="Enregistrer les métadonnées d'un fichier"
143
-6015="Supprimer le fichier du système de fichiers"
144
-6016="Réinitialiser réglage de l'image"
145
-6017="Réinitialiser position de l'image"
146
-6018="Inverser Gauche/Droite"
147
-?6019="Gamma correction - decrease"
148
-?6020="Gamma correction - increase"
149
-?6021="DX separation - decrease"
150
-?6022="DX separation - increase"
151
-?6023="DY separation - decrease"
152
-?6024="DY separation - increase"
153
-?6025="Angular separation - decrease"
154
-?6026="Angular separation - increase"
155
-6027="Faire pivoter un objet de 90 degrés vers la gauche"
156
-6028="Faire pivoter un objet de 90 degrés vers la droite"
157
-6029="Sens inverse des aiguilles d’une montre"
158
-6030="Sens des aiguilles d’une montre"
159
-?6031="Select next view mode"
160
-6032="Naviguer vers la gauche"
161
-6033="Naviguer vers la droite"
162
-6034="Naviguer vers le haut"
163
-6035="Naviguer vers le bas"
164
-6036="Zoom"
165
-6037="Dézoomer"
166
-?6038="Y Rotation - left"
167
-?6039="Y Rotation - right"
168
-?6040="X Rotation - up"
169
-?6041="X Rotation - down"
170
-6042="Activer / désactiver le mode panorama"
171
+1000=Image Précédente
172
+1001=Image Suivante
173
+1002=Gauche/Droite inversé
174
+1003=Gauche/Droite normal
175
+1004=Format entrée:
176
+1015=Ouvre autre image
177
+1028=Affiche/Masque playlist
178
+1029=Bascule\Plein écran/fenêtre
179
+1100=Média
180
+1101=Ouvre Image...
181
+1102=Enregistre Image Sous..
182
+1103=Format Stéréo d'entrée
183
+1104=Image info
184
+1109=Quitter
185
+1110=Depuis un fichier
186
+1111=2 Fichiers Gauche+Droit
187
+1130=Source
188
+1131=Mono
189
+1132=Cross-eyed
190
+1133=Coté/Coté (SbS)
191
+1134=Dessus/Dessous(D/G)
192
+1135=Dessus/Dessous(G/D)
193
+1136=Entrelacé
194
+1137=Anaglyphe Rouge/Bleu
195
+1138=Anaglyphe Vert/Magenta
196
+1139=Anaglyphe Jaune/Bleu
197
+1142=2 Streams
198
+1200=Affichage
199
+1201=Sortie Stéréo
200
+1202=Plein Ecran
201
+1203=Réinitialisation
202
+1204=Inverser Gauche/Droite
203
+1205=Ratio d'affichage
204
+1206=Lissage antialiasing
205
+1207=Réglage de l'image
206
+1208=Panorama
207
+1210=Stéréo
208
+1211=Vue Gauche
209
+1212=Vue Droite
210
+1213=Coté/Coté (SbS)
211
+1214=Cross-eyed
212
+1250=Source
213
+1251=Garder après redémarrage
214
+?1252=Heal anamorphic 1080p/720p
215
+1260=Plus proche
216
+1261=Lineaire
217
+1270=Rétablir par défaut
218
+1271=Brightness
219
+1272=Saturation
220
+1273=Gamma
221
+1280=Plan
222
+1281=Sphère
223
+1282=Cylindre
224
+1283=Cubemap
225
+?1285=Track orientation
226
+?1286=Track orientation (poor)
227
+1400=Changer la sortie
228
+1401=A propos du Plugin...
229
+1402=Voir I/S
230
+1403=Synchro Vert.
231
+1500=Aide
232
+1501=A Propos...
233
+1502=Vérifier nouvelle version
234
+1503=Texte de la Licence
235
+1504=Language
236
+1506=Conseils d'utilisation
237
+?1508=About system
238
+?1509=Scale Interface
239
+1510=Raccourcis
240
+1511=Paramètres
241
+1520=Maintenant
242
+1521=Chaque Jour
243
+1522=Chaque Mois
244
+1523=Chaque Année
245
+1524=Jamais
246
+1590=Petit
247
+1591=Normal
248
+1592=Gros
249
+1593=Force HiDPI 2X
250
+2000=Choix du fichier image à ouvrir
251
+2001=Choix du fichier image Gauche à ouvrir
252
+2002=Choix du fichier image Droite à ouvrir
253
+2003=Info de l'image
254
+2004=L'information est indisponible
255
+?2005=File deletion
256
+?2006=Do you really want to completely remove this file?
257
+?2007=File metadata saving
258
+?2008=Do you really want to save metadata to the file?
259
+?2009=Metadata can be saved only into JPEG files.
260
+2010=Emplacement de la capture écran
261
+2011=Rien à enregistrer!
262
+2012=Capture non disponible!
263
+2013=Changement raccourcu clavier pour\n<i>{0}</i>
264
+?2014=Conflicts with: <i>{0}</i>
265
+3000=sView - Image Viewer
266
+3001=version
267
+3002=Image viewer vous permet d'ouvrir des images stéréoscopiques en formats JPEG, PNG, MPO.\n © {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis program is distributed under GPL3.0
268
+3003=Une nouvelle version de sView est disponible sur le site officiel www.sview.ru.\nSVP, mettez votre programme à jour.
269
+3004=Informations sur le système
270
+4000=Fermer
271
+4001=Annuler
272
+4006=Enregistre
273
+4007=Supprimer
274
+?4008=Default
275
+?4009=Defaults
276
+4010=Affecter
277
+5000=[gauche]
278
+5001=[droite]
279
+5002=Nom de fichier
280
+5003=Résolution
281
+5004=Temps de démarrage
282
+5005=ms
283
+5006=Pixel ratio
284
+5007=Modèle colorimétrique
285
+?5008=(does not stored in metadata)
286
+?5009=(does not match metadata)
287
+?5011=(does not stored in metadata,\nbut detected from file name)
288
+5100=JPEG commentaire
289
+5101=JPS commentaire
290
+5200=Camera Maker
291
+5201=Camera Model
292
+5202=User Comment
293
+5203=Image timestamp
294
+6000=Bascule\Plein écran/fenêtre
295
+6001=Voir I/S
296
+6002=Format Stéréo d'entrée - Auto-détection
297
+6003=Format Stéréo d'entrée - Mono
298
+6004=Format Stéréo d'entrée - Dessus/Dessous
299
+6005=Format Stéréo d'entrée - Coté/Coté (SbS)
300
+6006=Afficher les informations sur le fichier
301
+6007=Playlist - Aller au premier élément
302
+6008=Playlist - Aller au dernier élément
303
+6009=Playlist - Aller à l'élément précédent
304
+6010=Playlist - Aller à l'élément suivant
305
+6011=Playlist - Lancer / arrêter le diaporama
306
+6012=Enregistrer au format PNG
307
+6013=Enregistrer au format JPEG
308
+6014=Enregistrer les métadonnées d'un fichier
309
+6015=Supprimer le fichier du système de fichiers
310
+6016=Réinitialiser réglage de l'image
311
+6017=Réinitialiser position de l'image
312
+6018=Inverser Gauche/Droite
313
+?6019=Gamma correction - decrease
314
+?6020=Gamma correction - increase
315
+?6021=DX separation - decrease
316
+?6022=DX separation - increase
317
+?6023=DY separation - decrease
318
+?6024=DY separation - increase
319
+?6025=Angular separation - decrease
320
+?6026=Angular separation - increase
321
+6027=Faire pivoter un objet de 90 degrés vers la gauche
322
+6028=Faire pivoter un objet de 90 degrés vers la droite
323
+6029=Sens inverse des aiguilles d’une montre
324
+6030=Sens des aiguilles d’une montre
325
+?6031=Select next view mode
326
+6032=Naviguer vers la gauche
327
+6033=Naviguer vers la droite
328
+6034=Naviguer vers le haut
329
+6035=Naviguer vers le bas
330
+6036=Zoom
331
+6037=Dézoomer
332
+?6038=Y Rotation - left
333
+?6039=Y Rotation - right
334
+?6040=X Rotation - up
335
+?6041=X Rotation - down
336
+6042=Activer / désactiver le mode panorama
337
sview-15_10.tar.gz/StImageViewer/lang/german/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/german/StImageViewer.lng Changed
337
 
1
@@ -1,169 +1,169 @@
2
 # German translation file for StImageViewer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Vorheriges Bild"
6
-1001="Nachstes Bild"
7
-1002="L&R Vertauschen An"
8
-1003="L&R Vertauschen Aus"
9
-1004="Quellformat:"
10
-1015="Öffnen anderen Bild"
11
-1028="Anzeigen/ausblenden Wiedergabeliste"
12
-1029="Vollbildmodus/Fenstermodus"
13
-1100="Medien"
14
-1101="Bild öffnen..."
15
-1102="Bild speichern als..."
16
-1103="Quelle Stereo-Format"
17
-1104="Bildinfo"
18
-1109="Beenden"
19
-1110="Einer Datei"
20
-1111="Zwei Dateien"
21
-1130="Quelle"
22
-1131="Mono"
23
-1132="Schielend"
24
-1133="Parallel Pair"
25
-1134="Over/Under (R/L)"
26
-1135="Over/Under (L/R)"
27
-1136="Interlaced"
28
-1137="Anaglyph Rot/Cyan"
29
-1138="Anaglyph Grün/Rot+Blau"
30
-1139="Anaglyph Gelb/Blau"
31
-1142="2 Streams"
32
-1200="Ansicht"
33
-1201="Stereo-Ausgang"
34
-1202="Vollbild"
35
-1203="Zurückstellen"
36
-1204="L&R Vertauschen"
37
-1205="Seitenverhältnis"
38
-1206="Glatte Filter"
39
-1207="Bildeinstellung"
40
-1208="Panorama"
41
-1210="Stereo"
42
-1211="Linke Bild"
43
-1212="Rechte Bild"
44
-1213="Parallel Pair"
45
-1214="Cross-eyed"
46
-1250="Quelle"
47
-1251="Halten beim Neustart"
48
-?1252="Heal anamorphic 1080p/720p"
49
-1260="Nearest"
50
-1261="Linear"
51
-1270="Auf Standardwerte zurücksetzen"
52
-1271="Helligkeit"
53
-1272="Sättigung"
54
-1273="Gamma"
55
-1280="Aus"
56
-1281="Kugel"
57
-1282="Zylinder"
58
-1283="Cubemap"
59
-?1285="Track orientation"
60
-?1286="Track orientation (poor)"
61
-1400="Gerät ändern"
62
-1401="Über Plugin..."
63
-1402="FPS anzeigen"
64
-1403="VSync"
65
-1500="Hilfe"
66
-1501="Über..."
67
-1502="Nach Updates suchen"
68
-1503="Lizenztext"
69
-1504="Language"
70
-1506="Anwendertipps"
71
-1508="Über System"
72
-1509="Maßstab Benutzeroberfläche"
73
-1510="Hotkeys"
74
-1511="Einstellungen"
75
-1520="jetzt"
76
-1521="täglich"
77
-1522="wöchentlich"
78
-1523="jährlich"
79
-1524="nie"
80
-1590="klein"
81
-1591="normal"
82
-1592="groß"
83
-1593="erzwingen HiDPI 2X"
84
-2000="Wählen die Bilddatei zu öffnen"
85
-2001="Wählen die linke Bilddatei zu öffnen"
86
-2002="Wählen die rechte Bilddatei zu öffnen"
87
-2003="Bildinfo"
88
-2004="Information nicht verfügbar"
89
-2005="Löschen von Dateien"
90
-?2006="Do you really want to completely remove this file?"
91
-?2007="File metadata saving"
92
-?2008="Do you really want to save metadata to the file?"
93
-?2009="Metadata can be saved only into JPEG files."
94
-2010="Wählen einen Speicherort für Schnappschuss"
95
-2011="Nichts zu speichern!"
96
-2012="Schnappschuss ist nicht verfügbar!"
97
-2013="Hotkey ändern\n<i>{0}</i>"
98
-2014="Konflikten: <i>{0}</i>"
99
-3000="sView - Image Viewer"
100
-3001="Version"
101
-?3002="Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
102
-?3003="A new version of sView is available on the official site www.sview.ru.\nPlease update your program."
103
-3004="System Info"
104
-4000="Schließen"
105
-4001="Abbrechen"
106
-4006="Speichern"
107
-4007="Löschen"
108
-4008="Default"
109
-4009="Defaults"
110
-4010="Zuweisen"
111
-5000="[linke]"
112
-5001="[rechte]"
113
-5002="Dateiname"
114
-5003="Auflösung"
115
-5004="Ladezeit"
116
-5005="ms"
117
-5006="Pixelseitenverhältnis"
118
-5007="Farbmodell"
119
-5008="(nicht in Metadaten gespeichert)"
120
-5009="(keine Metadaten übereinstimmen)"
121
-5011="(nicht in Metadaten gespeichert,\nsondern von Dateinamen detektiert)"
122
-5100="JPEG Kommentar"
123
-5101="JPS Kommentar"
124
-5200="Kamerahersteller"
125
-5201="Kameramodell"
126
-5202="User Kommentar"
127
-5203="Bild-Zeitstempel"
128
-6000="Vollbildmodus/Fenstermodus"
129
-6001="FPS anzeigen"
130
-6002="Stereo-Format - Autoerkennung"
131
-6003="Stereo-Format - Mono"
132
-6004="Stereo-Format - Over/Under"
133
-6005="Stereo-Format - Side by side"
134
-6006="Datei info"
135
-6007="Wiedergabeliste - Zum ersten Element"
136
-6008="Wiedergabeliste - Zum letzten Element"
137
-6009="Wiedergabeliste - Zum vorherigen Element"
138
-6010="Wiedergabeliste - Zum nächsten Element"
139
-6011="Wiedergabeliste - Diashow starten / stoppen"
140
-6012="Speichern im PNG-Format"
141
-6013="Speichern im JPEG-Format"
142
-6014="Datei-Metadaten speichern"
143
-6015="Die Datei löschen aus dem Dateisystem"
144
-6016="Zurücksetzen Bildeinstellung"
145
-6017="Zurücksetzen Bildposition"
146
-6018="L&R Vertauschen"
147
-6019="Gamma-Korrektur - verringern"
148
-6020="Gamma-Korrektur - erhöhen"
149
-6021="DX Trennung - verringern"
150
-6022="DX Trennung - erhöhen"
151
-6023="DY Trennung - verringern"
152
-6024="DY Trennung - erhöhen"
153
-6025="Winkelabstand - verringern"
154
-6026="Winkelabstand - erhöhen"
155
-6027="Um 90 Grad gegen Uhrzeigersinn drehen"
156
-6028="Um 90 Grad im Uhrzeigersinn drehen"
157
-6029="Drehen gegen den Uhrzeigersinn"
158
-6030="Im Uhrzeigersinn drehen"
159
-?6031="Select next view mode"
160
-6032="Navigieren nach links"
161
-6033="Navigieren nach rechts"
162
-6034="Navigieren nach oben"
163
-6035="Navigieren nach unten"
164
-6036="Zoomen"
165
-6037="Herauszoomen"
166
-6038="Y-Drehung - links"
167
-6039="Y-Drehung - rechts"
168
-6040="X-Drehung - nach oben"
169
-6041="X-Drehung - nach unten"
170
-6042="Aktivieren / Deaktivieren der Panorama-Modus"
171
+1000=Vorheriges Bild
172
+1001=Nachstes Bild
173
+1002=L&R Vertauschen An
174
+1003=L&R Vertauschen Aus
175
+1004=Quellformat:
176
+1015=Öffnen anderen Bild
177
+1028=Anzeigen/ausblenden Wiedergabeliste
178
+1029=Vollbildmodus/Fenstermodus
179
+1100=Medien
180
+1101=Bild öffnen...
181
+1102=Bild speichern als...
182
+1103=Quelle Stereo-Format
183
+1104=Bildinfo
184
+1109=Beenden
185
+1110=Einer Datei
186
+1111=Zwei Dateien
187
+1130=Quelle
188
+1131=Mono
189
+1132=Schielend
190
+1133=Parallel Pair
191
+1134=Over/Under (R/L)
192
+1135=Over/Under (L/R)
193
+1136=Interlaced
194
+1137=Anaglyph Rot/Cyan
195
+1138=Anaglyph Grün/Rot+Blau
196
+1139=Anaglyph Gelb/Blau
197
+1142=2 Streams
198
+1200=Ansicht
199
+1201=Stereo-Ausgang
200
+1202=Vollbild
201
+1203=Zurückstellen
202
+1204=L&R Vertauschen
203
+1205=Seitenverhältnis
204
+1206=Glatte Filter
205
+1207=Bildeinstellung
206
+1208=Panorama
207
+1210=Stereo
208
+1211=Linke Bild
209
+1212=Rechte Bild
210
+1213=Parallel Pair
211
+1214=Cross-eyed
212
+1250=Quelle
213
+1251=Halten beim Neustart
214
+?1252=Heal anamorphic 1080p/720p
215
+1260=Nearest
216
+1261=Linear
217
+1270=Auf Standardwerte zurücksetzen
218
+1271=Helligkeit
219
+1272=Sättigung
220
+1273=Gamma
221
+1280=Aus
222
+1281=Kugel
223
+1282=Zylinder
224
+1283=Cubemap
225
+?1285=Track orientation
226
+?1286=Track orientation (poor)
227
+1400=Gerät ändern
228
+1401=Über Plugin...
229
+1402=FPS anzeigen
230
+1403=VSync
231
+1500=Hilfe
232
+1501=Über...
233
+1502=Nach Updates suchen
234
+1503=Lizenztext
235
+1504=Language
236
+1506=Anwendertipps
237
+1508=Über System
238
+1509=Maßstab Benutzeroberfläche
239
+1510=Hotkeys
240
+1511=Einstellungen
241
+1520=jetzt
242
+1521=täglich
243
+1522=wöchentlich
244
+1523=jährlich
245
+1524=nie
246
+1590=klein
247
+1591=normal
248
+1592=groß
249
+1593=erzwingen HiDPI 2X
250
+2000=Wählen die Bilddatei zu öffnen
251
+2001=Wählen die linke Bilddatei zu öffnen
252
+2002=Wählen die rechte Bilddatei zu öffnen
253
+2003=Bildinfo
254
+2004=Information nicht verfügbar
255
+2005=Löschen von Dateien
256
+?2006=Do you really want to completely remove this file?
257
+?2007=File metadata saving
258
+?2008=Do you really want to save metadata to the file?
259
+?2009=Metadata can be saved only into JPEG files.
260
+2010=Wählen einen Speicherort für Schnappschuss
261
+2011=Nichts zu speichern!
262
+2012=Schnappschuss ist nicht verfügbar!
263
+2013=Hotkey ändern\n<i>{0}</i>
264
+2014=Konflikten: <i>{0}</i>
265
+3000=sView - Image Viewer
266
+3001=Version
267
+?3002=Image viewer allows you to open stereoscopic images in formats JPEG, PNG, MPO and a lot of others.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
268
+?3003=A new version of sView is available on the official site www.sview.ru.\nPlease update your program.
269
+3004=System Info
270
+4000=Schließen
271
+4001=Abbrechen
272
+4006=Speichern
273
+4007=Löschen
274
+4008=Default
275
+4009=Defaults
276
+4010=Zuweisen
277
+5000=[linke]
278
+5001=[rechte]
279
+5002=Dateiname
280
+5003=Auflösung
281
+5004=Ladezeit
282
+5005=ms
283
+5006=Pixelseitenverhältnis
284
+5007=Farbmodell
285
+5008=(nicht in Metadaten gespeichert)
286
+5009=(keine Metadaten übereinstimmen)
287
+5011=(nicht in Metadaten gespeichert,\nsondern von Dateinamen detektiert)
288
+5100=JPEG Kommentar
289
+5101=JPS Kommentar
290
+5200=Kamerahersteller
291
+5201=Kameramodell
292
+5202=User Kommentar
293
+5203=Bild-Zeitstempel
294
+6000=Vollbildmodus/Fenstermodus
295
+6001=FPS anzeigen
296
+6002=Stereo-Format - Autoerkennung
297
+6003=Stereo-Format - Mono
298
+6004=Stereo-Format - Over/Under
299
+6005=Stereo-Format - Side by side
300
+6006=Datei info
301
+6007=Wiedergabeliste - Zum ersten Element
302
+6008=Wiedergabeliste - Zum letzten Element
303
+6009=Wiedergabeliste - Zum vorherigen Element
304
+6010=Wiedergabeliste - Zum nächsten Element
305
+6011=Wiedergabeliste - Diashow starten / stoppen
306
+6012=Speichern im PNG-Format
307
+6013=Speichern im JPEG-Format
308
+6014=Datei-Metadaten speichern
309
+6015=Die Datei löschen aus dem Dateisystem
310
+6016=Zurücksetzen Bildeinstellung
311
+6017=Zurücksetzen Bildposition
312
+6018=L&R Vertauschen
313
+6019=Gamma-Korrektur - verringern
314
+6020=Gamma-Korrektur - erhöhen
315
+6021=DX Trennung - verringern
316
+6022=DX Trennung - erhöhen
317
+6023=DY Trennung - verringern
318
+6024=DY Trennung - erhöhen
319
+6025=Winkelabstand - verringern
320
+6026=Winkelabstand - erhöhen
321
+6027=Um 90 Grad gegen Uhrzeigersinn drehen
322
+6028=Um 90 Grad im Uhrzeigersinn drehen
323
+6029=Drehen gegen den Uhrzeigersinn
324
+6030=Im Uhrzeigersinn drehen
325
+?6031=Select next view mode
326
+6032=Navigieren nach links
327
+6033=Navigieren nach rechts
328
+6034=Navigieren nach oben
329
+6035=Navigieren nach unten
330
+6036=Zoomen
331
+6037=Herauszoomen
332
+6038=Y-Drehung - links
333
+6039=Y-Drehung - rechts
334
+6040=X-Drehung - nach oben
335
+6041=X-Drehung - nach unten
336
+6042=Aktivieren / Deaktivieren der Panorama-Modus
337
sview-15_10.tar.gz/StImageViewer/lang/korean/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/korean/StImageViewer.lng Changed
337
 
1
@@ -2,169 +2,169 @@
2
 # @author Kirill Gavrilov
3
 # @translator Kwon Daesuk <hyntel@clunix.com>
4
 --------
5
-1000="앞 이미지"
6
-1001="다음 이미지"
7
-1002="좌/우 변경"
8
-1003="좌/우 복원"
9
-1004="소스 포맷:"
10
-1015="다른 이미지 열기"
11
-1028="재생 목록 보이기/감추기"
12
-1029="전환\n전체화면/윈도화면"
13
-1100="미디어"
14
-1101="이미지 열기..."
15
-1102="다른 이름으로 저장..."
16
-1103="입력 스테레오 형식"
17
-?1104="Image info"
18
-1109="나가기"
19
-1110="한 파일에서 열기"
20
-1111="좌+우 파일들에서 열기"
21
-1130="자동감지"
22
-1131="모노"
23
-1132="크로스-아이"
24
-1133="패럴렐 페어"
25
-1134="상/하(R/L)"
26
-1135="상/하(L/R)"
27
-?1136="Interlaced"
28
-?1137="Anaglyph Red/Cyan"
29
-?1138="Anaglyph Green/Red+Blue"
30
-?1139="Anaglyph Yellow/Blue"
31
-?1142="2 Streams"
32
-?1200="View"
33
-1201="입체 출력"
34
-1202="전체 화면"
35
-1203="리셋"
36
-1204="좌/우 변경"
37
-1205="화면 비율"
38
-?1206="Smooth Filter"
39
-1207="이미지 보정"
40
-?1208="Panorama"
41
-?1210="Stereo"
42
-?1211="Left View"
43
-?1212="Right View"
44
-1213="패럴렐 페어"
45
-1214="크로스-아이"
46
-?1250="Source"
47
-1251="재시작시 유지"
48
-?1252="Heal anamorphic 1080p/720p"
49
-?1260="Nearest"
50
-?1261="Linear"
51
-1270="기본값으로 리셋"
52
-1271="밝기"
53
-?1272="Saturation"
54
-1273="감마"
55
-?1280="Off"
56
-?1281="Sphere"
57
-?1282="Cylinder"
58
-?1283="Cubemap"
59
-?1285="Track orientation"
60
-?1286="Track orientation (poor)"
61
-1400="장치 변경"
62
-?1401="About Plugin..."
63
-?1402="Show FPS"
64
-?1403="VSync"
65
-1500="도움말"
66
-1501="이 프로그램에 대해..."
67
-1502="업데이트 확인"
68
-1503="라이선스 문서"
69
-1504="언어 (Language)"
70
-1506="사용자 팁"
71
-?1508="About system"
72
-?1509="Interface Scale"
73
-?1510="Hotkeys"
74
-?1511="Settings"
75
-1520="지금"
76
-1521="매일Each day"
77
-1522="매주Each week"
78
-1523="매년Each year"
79
-1524="하지 않음Never"
80
-1590="작게 Small"
81
-1591="보통Normal"
82
-1592="크게 Big"
83
-1593="HiDPI 2X로"
84
-2000="열어볼 이미지 파일 선택"
85
-2001="왼쪽 이미지 선택"
86
-2002="오른쪽 이미지 선택"
87
-2003="Image Info"
88
-2004="Information is unavailable"
89
-2005="File deletion"
90
-2006="Do you really want to completely remove this file?"
91
-2007="File metadata saving"
92
-2008="Do you really want to save metadata to the file?"
93
-2009="Metadata can be saved only into JPEG files."
94
-2010="스냅샷 저장 위치 선택"
95
-2011="저장할 수 없음!"
96
-2012="스냅샷이 없음!"
97
-?2013="Assign new Hot Key for action\n<i>{0}</i>"
98
-?2014="Conflicts with: <i>{0}</i>"
99
-3000="sView - 이미지 뷰어"
100
-3001="version"
101
-3002="이 이미지 뷰어로 JPEG, PNG, MPO 외 다양한 양식의 스테레오 이미지를 볼 수 있습니다.\n © {0} Kirill Gavrilov <{1}>\n 공식 사이트: {2}\n\n이 프로그램은 GPL3.0 하에 배포됩니다."
102
-3003="sView 최신 버전은 공식 사이트 www.sview.ru에서 구할 수 있습니다.\n프로그램을 업데이트하세요."
103
-?3004="System Info"
104
-4000="닫기"
105
-?4001="Cancel"
106
-?4006="Save"
107
-?4007="Delete"
108
-?4008="Default"
109
-?4009="Defaults"
110
-?4010="Assign"
111
-?5000="[left]"
112
-?5001="[right]"
113
-?5002="File name"
114
-?5003="Dimensions"
115
-?5004="Load time"
116
-?5005="ms"
117
-?5006="Pixel ratio"
118
-?5007="Color model"
119
-?5008="(does not stored in metadata)"
120
-?5009="(does not match metadata)"
121
-?5011="(does not stored in metadata,\nbut detected from file name)"
122
-?5100="JPEG Comment"
123
-?5101="JPS Comment"
124
-?5200="Camera Maker"
125
-?5201="Camera Model"
126
-?5202="User Comment"
127
-?5203="Image timestamp"
128
-6000="전환 전체화면/윈도화면"
129
-?6001="Show/hide FPS meter"
130
-6002="입력 스테레오 형식: 자동감지"
131
-6003="입력 스테레오 형식: 모노"
132
-6004="입력 스테레오 형식: 상/하"
133
-6005="입력 스테레오 형식: 크로스-아이"
134
-?6006="Show file info"
135
-?6007="Playlist - Go to the first item"
136
-?6008="Playlist - Go to the last item"
137
-?6009="Playlist - Go to the previous item"
138
-?6010="Playlist - Go to the next item"
139
-?6011="Playlist - Start/stop slideshow"
140
-6012="다른 이름으로 저장 PNG"
141
-6013="다른 이름으로 저장 JPEG"
142
-?6014="Save file metadata"
143
-?6015="Delete the file from file system"
144
-?6016="Reset image adjustment"
145
-?6017="Reset image position"
146
-6018="좌/우 변경"
147
-?6019="Gamma correction - decrease"
148
-?6020="Gamma correction - increase"
149
-?6021="DX separation - decrease"
150
-?6022="DX separation - increase"
151
-?6023="DY separation - decrease"
152
-?6024="DY separation - increase"
153
-?6025="Angular separation - decrease"
154
-?6026="Angular separation - increase"
155
-?6027="Rotate 90 degrees counterclockwise"
156
-?6028="Rotate 90 degrees clockwise"
157
-?6029="Rotate counterclockwise"
158
-?6030="Rotate clockwise"
159
-?6031="Select next view mode"
160
-?6032="Panning - navigate to the left"
161
-?6033="Panning - navigate to the right"
162
-?6034="Panning - navigate to the top"
163
-?6035="Panning - navigate to the bottom"
164
-?6036="Scale - increment"
165
-?6037="Scale - decrement"
166
-?6038="Y Rotation - left"
167
-?6039="Y Rotation - right"
168
-?6040="X Rotation - up"
169
-?6041="X Rotation - down"
170
-?6042="Enable/disable panorama mode"
171
+1000=앞 이미지
172
+1001=다음 이미지
173
+1002=좌/우 변경
174
+1003=좌/우 복원
175
+1004=소스 포맷:
176
+1015=다른 이미지 열기
177
+1028=재생 목록 보이기/감추기
178
+1029=전환\n전체화면/윈도화면
179
+1100=미디어
180
+1101=이미지 열기...
181
+1102=다른 이름으로 저장...
182
+1103=입력 스테레오 형식
183
+?1104=Image info
184
+1109=나가기
185
+1110=한 파일에서 열기
186
+1111=좌+우 파일들에서 열기
187
+1130=자동감지
188
+1131=모노
189
+1132=크로스-아이
190
+1133=패럴렐 페어
191
+1134=상/하(R/L)
192
+1135=상/하(L/R)
193
+?1136=Interlaced
194
+?1137=Anaglyph Red/Cyan
195
+?1138=Anaglyph Green/Red+Blue
196
+?1139=Anaglyph Yellow/Blue
197
+?1142=2 Streams
198
+?1200=View
199
+1201=입체 출력
200
+1202=전체 화면
201
+1203=리셋
202
+1204=좌/우 변경
203
+1205=화면 비율
204
+?1206=Smooth Filter
205
+1207=이미지 보정
206
+?1208=Panorama
207
+?1210=Stereo
208
+?1211=Left View
209
+?1212=Right View
210
+1213=패럴렐 페어
211
+1214=크로스-아이
212
+?1250=Source
213
+1251=재시작시 유지
214
+?1252=Heal anamorphic 1080p/720p
215
+?1260=Nearest
216
+?1261=Linear
217
+1270=기본값으로 리셋
218
+1271=밝기
219
+?1272=Saturation
220
+1273=감마
221
+?1280=Off
222
+?1281=Sphere
223
+?1282=Cylinder
224
+?1283=Cubemap
225
+?1285=Track orientation
226
+?1286=Track orientation (poor)
227
+1400=장치 변경
228
+?1401=About Plugin...
229
+?1402=Show FPS
230
+?1403=VSync
231
+1500=도움말
232
+1501=이 프로그램에 대해...
233
+1502=업데이트 확인
234
+1503=라이선스 문서
235
+1504=언어 (Language)
236
+1506=사용자 팁
237
+?1508=About system
238
+?1509=Interface Scale
239
+?1510=Hotkeys
240
+?1511=Settings
241
+1520=지금
242
+1521=매일Each day
243
+1522=매주Each week
244
+1523=매년Each year
245
+1524=하지 않음Never
246
+1590=작게 Small
247
+1591=보통Normal
248
+1592=크게 Big
249
+1593=HiDPI 2X로
250
+2000=열어볼 이미지 파일 선택
251
+2001=왼쪽 이미지 선택
252
+2002=오른쪽 이미지 선택
253
+2003=Image Info
254
+2004=Information is unavailable
255
+2005=File deletion
256
+2006=Do you really want to completely remove this file?
257
+2007=File metadata saving
258
+2008=Do you really want to save metadata to the file?
259
+2009=Metadata can be saved only into JPEG files.
260
+2010=스냅샷 저장 위치 선택
261
+2011=저장할 수 없음!
262
+2012=스냅샷이 없음!
263
+?2013=Assign new Hot Key for action\n<i>{0}</i>
264
+?2014=Conflicts with: <i>{0}</i>
265
+3000=sView - 이미지 뷰어
266
+3001=version
267
+3002=이 이미지 뷰어로 JPEG, PNG, MPO 외 다양한 양식의 스테레오 이미지를 볼 수 있습니다.\n © {0} Kirill Gavrilov <{1}>\n 공식 사이트: {2}\n\n이 프로그램은 GPL3.0 하에 배포됩니다.
268
+3003=sView 최신 버전은 공식 사이트 www.sview.ru에서 구할 수 있습니다.\n프로그램을 업데이트하세요.
269
+?3004=System Info
270
+4000=닫기
271
+?4001=Cancel
272
+?4006=Save
273
+?4007=Delete
274
+?4008=Default
275
+?4009=Defaults
276
+?4010=Assign
277
+?5000=[left]
278
+?5001=[right]
279
+?5002=File name
280
+?5003=Dimensions
281
+?5004=Load time
282
+?5005=ms
283
+?5006=Pixel ratio
284
+?5007=Color model
285
+?5008=(does not stored in metadata)
286
+?5009=(does not match metadata)
287
+?5011=(does not stored in metadata,\nbut detected from file name)
288
+?5100=JPEG Comment
289
+?5101=JPS Comment
290
+?5200=Camera Maker
291
+?5201=Camera Model
292
+?5202=User Comment
293
+?5203=Image timestamp
294
+6000=전환 전체화면/윈도화면
295
+?6001=Show/hide FPS meter
296
+6002=입력 스테레오 형식: 자동감지
297
+6003=입력 스테레오 형식: 모노
298
+6004=입력 스테레오 형식: 상/하
299
+6005=입력 스테레오 형식: 크로스-아이
300
+?6006=Show file info
301
+?6007=Playlist - Go to the first item
302
+?6008=Playlist - Go to the last item
303
+?6009=Playlist - Go to the previous item
304
+?6010=Playlist - Go to the next item
305
+?6011=Playlist - Start/stop slideshow
306
+6012=다른 이름으로 저장 PNG
307
+6013=다른 이름으로 저장 JPEG
308
+?6014=Save file metadata
309
+?6015=Delete the file from file system
310
+?6016=Reset image adjustment
311
+?6017=Reset image position
312
+6018=좌/우 변경
313
+?6019=Gamma correction - decrease
314
+?6020=Gamma correction - increase
315
+?6021=DX separation - decrease
316
+?6022=DX separation - increase
317
+?6023=DY separation - decrease
318
+?6024=DY separation - increase
319
+?6025=Angular separation - decrease
320
+?6026=Angular separation - increase
321
+?6027=Rotate 90 degrees counterclockwise
322
+?6028=Rotate 90 degrees clockwise
323
+?6029=Rotate counterclockwise
324
+?6030=Rotate clockwise
325
+?6031=Select next view mode
326
+?6032=Panning - navigate to the left
327
+?6033=Panning - navigate to the right
328
+?6034=Panning - navigate to the top
329
+?6035=Panning - navigate to the bottom
330
+?6036=Scale - increment
331
+?6037=Scale - decrement
332
+?6038=Y Rotation - left
333
+?6039=Y Rotation - right
334
+?6040=X Rotation - up
335
+?6041=X Rotation - down
336
+?6042=Enable/disable panorama mode
337
sview-15_10.tar.gz/StImageViewer/lang/russian/StImageViewer.lng -> sview-15_11.tar.gz/StImageViewer/lang/russian/StImageViewer.lng Changed
337
 
1
@@ -1,169 +1,169 @@
2
 # Russian translation file for StImageViewer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Предыдущая картинка"
6
-1001="Следующая картинка"
7
-1002="Поменять ракурсы местами"
8
-1003="Отключить реверс ракурсов"
9
-1004="Исходный стереоформат:"
10
-1015="Открыть изображение"
11
-1028="Отобразить/Скрыть\nсписок файлов"
12
-1029="Оконный/Полноэкранный\nрежим просмотра"
13
-1100="Медиа"
14
-1101="Открыть изображение..."
15
-1102="Сохранить как..."
16
-1103="Исходный стереоформат"
17
-1104="Информация о файле"
18
-1109="Выход"
19
-1110="Из одного файла"
20
-1111="Левый+Правый файлы"
21
-1130="Исходный"
22
-1131="Моно"
23
-1132="Перекрёстная пара"
24
-1133="Параллельная пара"
25
-1134="Вертикальная пара (П/Л)"
26
-1135="Вертикальная пара (Л/П)"
27
-1136="Чересстрочный"
28
-1137="Анаглиф (Красно-Голубой)"
29
-1138="Анаглиф (Пурпурный)"
30
-1139="Анаглиф (Жёлтый)"
31
-1142="2 потока"
32
-1200="Вид"
33
-1201="Вывод стерео"
34
-1202="Полный экран"
35
-1203="Сбросить"
36
-1204="Реверс ракурсов"
37
-1205="Соотношение сторон"
38
-1206="Сглаживание текстур"
39
-1207="Цветокоррекция"
40
-1208="Панорама"
41
-1210="Стерео"
42
-1211="Левый ракурс"
43
-1212="Правый ракурс"
44
-1213="Параллельная пара"
45
-1214="Перекрёстная пара"
46
-1250="Исходное"
47
-1251="Запомнить"
48
-?1252="Heal anamorphic 1080p/720p"
49
-1260="Nearest"
50
-1261="Linear"
51
-1270="Сбросить настройки"
52
-1271="Яркость"
53
-1272="Насыщенность"
54
-1273="Гамма"
55
-1280="Плоскость"
56
-1281="Сфера"
57
-1282="Цилиндр"
58
-1283="Куб"
59
-1285="Отслеживать ориентацию"
60
-1286="Отслеживать ориентацию (poor)"
61
-1400="Выбрать устройство"
62
-1401="О модуле..."
63
-1402="Отображать FPS"
64
-1403="Верт. синхронизация"
65
-1500="Помощь"
66
-1501="О программе..."
67
-1502="Проверить обновления"
68
-1503="Открыть лицензию"
69
-1504="Language"
70
-1506="Подсказки"
71
-1508="О системе"
72
-1509="Масштаб. интерфейса"
73
-1510="Горячие клавиши"
74
-1511="Настройки"
75
-1520="Сейчас"
76
-1521="Каждый день"
77
-1522="Каждую неделю"
78
-1523="Каждый год"
79
-1524="Никогда"
80
-1590="Мелко"
81
-1591="Нормально"
82
-1592="Крупно"
83
-1593="Форсировать HiDPI 2X"
84
-2000="Выберите картинку"
85
-2001="Выберите файл с ЛЕВЫМ ракурсом"
86
-2002="Выберите файл с ПРАВЫМ ракурсом"
87
-2003="Информация о файле"
88
-2004="Информация не доступна"
89
-2005="Удаление файла"
90
-2006="Вы действительно хотите\n<b>удалить файл</b> минуя корзину?"
91
-2007="Сохранение метаданных"
92
-2008="Вы действительно хотите\nсохранить метаданные в файл?"
93
-2009="Сохранение метаданных доступно только для файлов JPEG."
94
-2010="Выберите путь для сохранения картинки"
95
-2011="Ничего не открыто!"
96
-2012="Изображение недоступно для сохранения!"
97
-2013="Назначить новую комбинацию для\n<i>{0}</i>"
98
-2014="Конфликтует с: <i>{0}</i>"
99
-3000="sView - программа для просмотра изображений"
100
-3001="версия"
101
-3002="Программа отображает стереоскопические изображения в форматах JPEG, PNG, MPO.\n © {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nПрограмма распространяется на условиях GPL3.0"
102
-3003="Доступно обновление программы.\nВы можете загрузить новую версию с официального сайта www.sview.ru."
103
-3004="Информация о системе"
104
-4000="Закрыть"
105
-4001="Отменить"
106
-4006="Сохранить"
107
-4007="Удалить"
108
-4008="По умолчанию"
109
-4009="Сбросить всё"
110
-4010="Установить"
111
-5000="[левый]"
112
-5001="[правый]"
113
-5002="Имя файла"
114
-5003="Разрешение"
115
-5004="Время загрузки"
116
-5005="мс"
117
-5006="Пропорции пикселя"
118
-5007="Color model"
119
-5008="(информация отсутствует в метаданных)"
120
-5009="(не соответствует метаданным)"
121
-5011="(информация отсутствует в метаданных,\nно была определена по имени файла)"
122
-5100="JPEG комментарий"
123
-5101="JPS комментарий"
124
-5200="Производитель камеры"
125
-5201="Модель камеры"
126
-5202="Комментарий"
127
-5203="Дата создания"
128
-6000="Активирование полноэкранного режима"
129
-6001="Отображение FPS"
130
-6002="Стереоформат - Автоопределение"
131
-6003="Стереоформат - Моно"
132
-6004="Стереоформат - Вертикальная пара"
133
-6005="Стереоформат - Перекрёстная пара"
134
-6006="Информация о файле"
135
-6007="Список файлов - Перейти к первому элементу"
136
-6008="Список файлов - Перейти к последнему элементу"
137
-6009="Список файлов - Перейти к предыдущему элементу"
138
-6010="Список файлов - Перейти к следующему элементу"
139
-6011="Список файлов - Запустить/остановить слайдшоу"
140
-6012="Сохранить в PNG формате"
141
-6013="Сохранить в JPEG формате"
142
-6014="Сохранить в файл метаданные со стереоформатом"
143
-6015="Удалить файл из файловой системы"
144
-6016="Сбросить настройки цвета"
145
-6017="Сбросить позицию картинки"
146
-6018="Реверс ракурсов"
147
-6019="Гамма коррекция - понизить коэффициент"
148
-6020="Гамма коррекция - повысить коэффициент"
149
-6021="DX разделение ракурсов - уменьшить"
150
-6022="DX разделение ракурсов - увеличить"
151
-6023="DY разделение ракурсов - уменьшить"
152
-6024="DY разделение ракурсов - увеличить"
153
-6025="Угловое разделение ракурсов - уменьшить"
154
-6026="Угловое разделение ракурсов - увеличить"
155
-6027="Поворот на 90 градусов против часовой стрелки"
156
-6028="Поворот на 90 градусов по часовой стрелке"
157
-6029="Поворот против часовой стрелки"
158
-6030="Поворот по часовой стрелке"
159
-6031="Выбрать следующий режим"
160
-6032="Паннинг - движение налево"
161
-6033="Паннинг - движение направо"
162
-6034="Паннинг - движение наверх"
163
-6035="Паннинг - движение вниз"
164
-6036="Масштабирование - увеличить"
165
-6037="Масштабирование - уменьшить"
166
-6038="Y наклон - налево"
167
-6039="Y наклон - направо"
168
-6040="X наклон - наверх"
169
-6041="X наклон - вниз"
170
-6042="Включить/выключить панорамный режим"
171
+1000=Предыдущая картинка
172
+1001=Следующая картинка
173
+1002=Поменять ракурсы местами
174
+1003=Отключить реверс ракурсов
175
+1004=Исходный стереоформат:
176
+1015=Открыть изображение
177
+1028=Отобразить/Скрыть\nсписок файлов
178
+1029=Оконный/Полноэкранный\nрежим просмотра
179
+1100=Медиа
180
+1101=Открыть изображение...
181
+1102=Сохранить как...
182
+1103=Исходный стереоформат
183
+1104=Информация о файле
184
+1109=Выход
185
+1110=Из одного файла
186
+1111=Левый+Правый файлы
187
+1130=Исходный
188
+1131=Моно
189
+1132=Перекрёстная пара
190
+1133=Параллельная пара
191
+1134=Вертикальная пара (П/Л)
192
+1135=Вертикальная пара (Л/П)
193
+1136=Чересстрочный
194
+1137=Анаглиф (Красно-Голубой)
195
+1138=Анаглиф (Пурпурный)
196
+1139=Анаглиф (Жёлтый)
197
+1142=2 потока
198
+1200=Вид
199
+1201=Вывод стерео
200
+1202=Полный экран
201
+1203=Сбросить
202
+1204=Реверс ракурсов
203
+1205=Соотношение сторон
204
+1206=Сглаживание текстур
205
+1207=Цветокоррекция
206
+1208=Панорама
207
+1210=Стерео
208
+1211=Левый ракурс
209
+1212=Правый ракурс
210
+1213=Параллельная пара
211
+1214=Перекрёстная пара
212
+1250=Исходное
213
+1251=Запомнить
214
+?1252=Heal anamorphic 1080p/720p
215
+1260=Nearest
216
+1261=Linear
217
+1270=Сбросить настройки
218
+1271=Яркость
219
+1272=Насыщенность
220
+1273=Гамма
221
+1280=Плоскость
222
+1281=Сфера
223
+1282=Цилиндр
224
+1283=Куб
225
+1285=Отслеживать ориентацию
226
+1286=Отслеживать ориентацию (poor)
227
+1400=Выбрать устройство
228
+1401=О модуле...
229
+1402=Отображать FPS
230
+1403=Верт. синхронизация
231
+1500=Помощь
232
+1501=О программе...
233
+1502=Проверить обновления
234
+1503=Открыть лицензию
235
+1504=Language
236
+1506=Подсказки
237
+1508=О системе
238
+1509=Масштаб. интерфейса
239
+1510=Горячие клавиши
240
+1511=Настройки
241
+1520=Сейчас
242
+1521=Каждый день
243
+1522=Каждую неделю
244
+1523=Каждый год
245
+1524=Никогда
246
+1590=Мелко
247
+1591=Нормально
248
+1592=Крупно
249
+1593=Форсировать HiDPI 2X
250
+2000=Выберите картинку
251
+2001=Выберите файл с ЛЕВЫМ ракурсом
252
+2002=Выберите файл с ПРАВЫМ ракурсом
253
+2003=Информация о файле
254
+2004=Информация не доступна
255
+2005=Удаление файла
256
+2006=Вы действительно хотите\n<b>удалить файл</b> минуя корзину?
257
+2007=Сохранение метаданных
258
+2008=Вы действительно хотите\nсохранить метаданные в файл?
259
+2009=Сохранение метаданных доступно только для файлов JPEG.
260
+2010=Выберите путь для сохранения картинки
261
+2011=Ничего не открыто!
262
+2012=Изображение недоступно для сохранения!
263
+2013=Назначить новую комбинацию для\n<i>{0}</i>
264
+2014=Конфликтует с: <i>{0}</i>
265
+3000=sView - программа для просмотра изображений
266
+3001=версия
267
+3002=Программа отображает стереоскопические изображения в форматах JPEG, PNG, MPO.\n © {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nПрограмма распространяется на условиях GPL3.0
268
+3003=Доступно обновление программы.\nВы можете загрузить новую версию с официального сайта www.sview.ru.
269
+3004=Информация о системе
270
+4000=Закрыть
271
+4001=Отменить
272
+4006=Сохранить
273
+4007=Удалить
274
+4008=По умолчанию
275
+4009=Сбросить всё
276
+4010=Установить
277
+5000=[левый]
278
+5001=[правый]
279
+5002=Имя файла
280
+5003=Разрешение
281
+5004=Время загрузки
282
+5005=мс
283
+5006=Пропорции пикселя
284
+5007=Color model
285
+5008=(информация отсутствует в метаданных)
286
+5009=(не соответствует метаданным)
287
+5011=(информация отсутствует в метаданных,\nно была определена по имени файла)
288
+5100=JPEG комментарий
289
+5101=JPS комментарий
290
+5200=Производитель камеры
291
+5201=Модель камеры
292
+5202=Комментарий
293
+5203=Дата создания
294
+6000=Активирование полноэкранного режима
295
+6001=Отображение FPS
296
+6002=Стереоформат - Автоопределение
297
+6003=Стереоформат - Моно
298
+6004=Стереоформат - Вертикальная пара
299
+6005=Стереоформат - Перекрёстная пара
300
+6006=Информация о файле
301
+6007=Список файлов - Перейти к первому элементу
302
+6008=Список файлов - Перейти к последнему элементу
303
+6009=Список файлов - Перейти к предыдущему элементу
304
+6010=Список файлов - Перейти к следующему элементу
305
+6011=Список файлов - Запустить/остановить слайдшоу
306
+6012=Сохранить в PNG формате
307
+6013=Сохранить в JPEG формате
308
+6014=Сохранить в файл метаданные со стереоформатом
309
+6015=Удалить файл из файловой системы
310
+6016=Сбросить настройки цвета
311
+6017=Сбросить позицию картинки
312
+6018=Реверс ракурсов
313
+6019=Гамма коррекция - понизить коэффициент
314
+6020=Гамма коррекция - повысить коэффициент
315
+6021=DX разделение ракурсов - уменьшить
316
+6022=DX разделение ракурсов - увеличить
317
+6023=DY разделение ракурсов - уменьшить
318
+6024=DY разделение ракурсов - увеличить
319
+6025=Угловое разделение ракурсов - уменьшить
320
+6026=Угловое разделение ракурсов - увеличить
321
+6027=Поворот на 90 градусов против часовой стрелки
322
+6028=Поворот на 90 градусов по часовой стрелке
323
+6029=Поворот против часовой стрелки
324
+6030=Поворот по часовой стрелке
325
+6031=Выбрать следующий режим
326
+6032=Паннинг - движение налево
327
+6033=Паннинг - движение направо
328
+6034=Паннинг - движение наверх
329
+6035=Паннинг - движение вниз
330
+6036=Масштабирование - увеличить
331
+6037=Масштабирование - уменьшить
332
+6038=Y наклон - налево
333
+6039=Y наклон - направо
334
+6040=X наклон - наверх
335
+6041=X наклон - вниз
336
+6042=Включить/выключить панорамный режим
337
sview-15_10.tar.gz/StMonitorsDump/StMonitorsDump.cbp -> sview-15_11.tar.gz/StMonitorsDump/StMonitorsDump.cbp Changed
49
 
1
@@ -6,32 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StMonitorsDump" prefix_auto="1" extension_auto="1" />
7
-               <Option working_dir="../bin/$(TARGET_NAME)/" />
8
-               <Option object_output="obj/$(TARGET_NAME)/" />
9
-               <Option type="1" />
10
-               <Option compiler="gcc" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-mmmx" />
17
-                   <Add option="-msse" />
18
-                   <Add option="-DUNICODE" />
19
-                   <Add option="-D_WIN32_WINNT=0x0500" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="gdi32" />
25
-                   <Add library="user32" />
26
-                   <Add library="kernel32" />
27
-                   <Add library="Version" />
28
-                   <Add library="nvapi" />
29
-               </Linker>
30
-           </Target>
31
            <Target title="WIN_vc_x86">
32
                <Option output="../bin/$(TARGET_NAME)/StMonitorsDump" prefix_auto="1" extension_auto="1" />
33
                <Option working_dir="../bin/$(TARGET_NAME)/" />
34
@@ -62,12 +36,12 @@
35
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /manifest &quot;..\dpiAware.manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;1' />
36
                </ExtraCommands>
37
            </Target>
38
-           <Target title="WIN_vc_x86_DEBUG">
39
+           <Target title="WIN_vc_AMD64_DEBUG">
40
                <Option output="../bin/$(TARGET_NAME)/StMonitorsDump" prefix_auto="1" extension_auto="1" />
41
                <Option working_dir="../bin/$(TARGET_NAME)/" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="1" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Compiler>
47
                    <Add option="/MDd" />
48
                    <Add option="/Od" />
49
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayer.cbp -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayer.cbp Changed
100
 
1
@@ -6,40 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStMoviePlayer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option parameters="--in=StMoviePlayer" />
11
-               <Option host_application="./sView" />
12
-               <Option run_host_application_in_terminal="0" />
13
-               <Option createStaticLib="1" />
14
-               <Compiler>
15
-                   <Add option="-O3" />
16
-                   <Add option="-std=c++0x" />
17
-                   <Add option="-Wall" />
18
-                   <Add option="-g" />
19
-                   <Add option="-shared" />
20
-                   <Add option="-mmmx" />
21
-                   <Add option="-msse" />
22
-                   <Add option="-DUNICODE" />
23
-                   <Add option="-DST_DEBUG" />
24
-                   <Add option="-DST_HAVE_STCONFIG" />
25
-               </Compiler>
26
-               <Linker>
27
-                   <Add library="opengl32" />
28
-                   <Add library="OpenAL32" />
29
-                   <Add library="gdi32" />
30
-                   <Add library="Comdlg32" />
31
-                   <Add library="shell32" />
32
-                   <Add library="Wsock32" />
33
-                   <Add library="Version" />
34
-               </Linker>
35
-               <ExtraCommands>
36
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
37
-               </ExtraCommands>
38
-           </Target>
39
            <Target title="WIN_vc_x86">
40
                <Option output="../bin/$(TARGET_NAME)/StMoviePlayer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
41
                <Option working_dir="../bin/$(TARGET_NAME)/" />
42
@@ -70,6 +36,7 @@
43
                    <Add library="Advapi32" />
44
                    <Add library="Comdlg32" />
45
                    <Add library="shell32" />
46
+                   <Add library="Ole32" />
47
                    <Add library="Wsock32" />
48
                </Linker>
49
                <ExtraCommands>
50
@@ -77,12 +44,12 @@
51
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
52
                </ExtraCommands>
53
            </Target>
54
-           <Target title="WIN_vc_x86_DEBUG">
55
+           <Target title="WIN_vc_AMD64_DEBUG">
56
                <Option output="../bin/$(TARGET_NAME)/StMoviePlayer" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
57
                <Option working_dir="../bin/$(TARGET_NAME)/" />
58
                <Option object_output="obj/$(TARGET_NAME)/" />
59
                <Option type="3" />
60
-               <Option compiler="msvc10" />
61
+               <Option compiler="windows_sdk_x86_64" />
62
                <Option parameters="--in=StMoviePlayer" />
63
                <Option host_application="./sView" />
64
                <Option run_host_application_in_terminal="0" />
65
@@ -111,6 +78,7 @@
66
                    <Add library="Advapi32" />
67
                    <Add library="Comdlg32" />
68
                    <Add library="shell32" />
69
+                   <Add library="Ole32" />
70
                    <Add library="Wsock32" />
71
                    <Add library="Version" />
72
                </Linker>
73
@@ -149,6 +117,7 @@
74
                    <Add library="Advapi32" />
75
                    <Add library="Comdlg32" />
76
                    <Add library="shell32" />
77
+                   <Add library="Ole32" />
78
                    <Add library="Wsock32" />
79
                </Linker>
80
                <ExtraCommands>
81
@@ -310,9 +279,8 @@
82
        <Unit filename="StMoviePlayer.h" />
83
        <Unit filename="StMoviePlayer.rc">
84
            <Option compilerVar="WINDRES" />
85
-           <Option target="WIN_gcc_x86" />
86
            <Option target="WIN_vc_x86" />
87
-           <Option target="WIN_vc_x86_DEBUG" />
88
+           <Option target="WIN_vc_AMD64_DEBUG" />
89
            <Option target="WIN_vc_AMD64" />
90
        </Unit>
91
        <Unit filename="StMoviePlayerGUI.cpp" />
92
@@ -339,6 +307,7 @@
93
        <Unit filename="StVideo/StSubtitlesASS.h" />
94
        <Unit filename="StVideo/StVideo.cpp" />
95
        <Unit filename="StVideo/StVideo.h" />
96
+       <Unit filename="StVideo/StVideoDxva2.cpp" />
97
        <Unit filename="StVideo/StVideoQueue.cpp" />
98
        <Unit filename="StVideo/StVideoQueue.h" />
99
        <Unit filename="StVideo/StVideoTimer.cpp" />
100
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayer.cpp -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayer.cpp Changed
536
 
1
@@ -28,6 +28,7 @@
2
 #include <StSocket/StCheckUpdates.h>
3
 #include <StSettings/StSettings.h>
4
 #include <StStrings/StStringStream.h>
5
+#include <StCore/StSearchMonitors.h>
6
 
7
 #include <StGL/StGLContext.h>
8
 #include <StGLCore/StGLCore20.h>
9
@@ -98,6 +99,7 @@
10
     static const char ST_SETTING_WEBUI_ON[]      = "webuiOn";
11
     static const char ST_SETTING_WEBUI_PORT[]    = "webuiPort";
12
     static const char ST_SETTING_WEBUI_ERRORS[]  = "webuiShowErrors";
13
+    static const char ST_SETTING_WEBUI_CMDPORT[] = "webuiCmdPort";
14
 
15
     static const char ST_ARGUMENT_FILE_LEFT[]  = "left";
16
     static const char ST_ARGUMENT_FILE_RIGHT[] = "right";
17
@@ -105,6 +107,30 @@
18
     static const char ST_ARGUMENT_FILE_PAUSE[] = "pause";
19
     static const char ST_ARGUMENT_FILE_PAUSED[]= "paused";
20
     static const char ST_ARGUMENT_BENCHMARK[]  = "benchmark";
21
+    static const char ST_ARGUMENT_SHOW_MENU[]  = "toShowMenu";
22
+    static const char ST_ARGUMENT_SHOW_TOPBAR[]= "toShowTopbar";
23
+    static const char ST_ARGUMENT_MONITOR[]    = "monitorId";
24
+    static const char ST_ARGUMENT_WINLEFT[]    = "windowLeft";
25
+    static const char ST_ARGUMENT_WINTOP[]     = "windowTop";
26
+    static const char ST_ARGUMENT_WINWIDTH[]   = "windowWidth";
27
+    static const char ST_ARGUMENT_WINHEIGHT[]  = "windowHeight";
28
+
29
+#ifdef _WIN32
30
+    inline void stFromLocaleOrUtf8(StString&   theStrResult,
31
+                                   const char* theStrInput) {
32
+        int aWideSize = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, theStrInput, -1, NULL, 0);
33
+        if(aWideSize == 0) {
34
+            theStrResult.fromLocale(theStrInput);
35
+            return;
36
+        }
37
+
38
+        wchar_t* aWideBuffer = new wchar_t[aWideSize + 1];
39
+        MultiByteToWideChar(CP_UTF8, 0, theStrInput, -1, aWideBuffer, aWideSize);
40
+        aWideBuffer[aWideSize] = L'\0';
41
+        theStrResult.fromUnicode(aWideBuffer);
42
+        delete[] aWideBuffer;
43
+    }
44
+#endif
45
 
46
 }
47
 
48
@@ -115,40 +141,54 @@
49
 
50
 void StALDeviceParam::initList() {
51
     myValue = 0;
52
-    myDevicesList.clear();
53
+    myDevicesLoc.clear();
54
+    myDevicesUtf.clear();
55
     StString aName;
56
     if(alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT") != AL_TRUE) {
57
-        // ansient OpenAL implementations supports only single device (like from apples)
58
+        // ancient OpenAL implementations (like from apples) support only single device
59
         const ALchar* aDefDevice = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
60
     #ifdef _WIN32
61
-        aName.fromLocale(aDefDevice);
62
+        stFromLocaleOrUtf8(aName, aDefDevice);
63
     #else
64
         aName.fromUnicode(aDefDevice);
65
     #endif
66
-        myDevicesList.add(aName);
67
+        myDevicesUtf.add(aName);
68
+        myDevicesLoc.push_back(std::string(aDefDevice));
69
         return;
70
     }
71
 
72
+    const StString THE_ALSOFT_SUFFIX(" on OpenAL Soft");
73
     const ALchar* aDevicesNames = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
74
-    while(aDevicesNames && *aDevicesNames) {
75
+    while(aDevicesNames != NULL
76
+      && *aDevicesNames != '\0') {
77
+        std::string aCName(aDevicesNames);
78
     #ifdef _WIN32
79
-        aName.fromLocale(aDevicesNames);
80
+        stFromLocaleOrUtf8(aName, aDevicesNames);
81
     #else
82
         aName.fromUnicode(aDevicesNames);
83
     #endif
84
-        myDevicesList.add(aName);
85
-        aDevicesNames += strlen(aDevicesNames) + 1;
86
+        // cut-off redundant suffixes - the names are too long
87
+        if(aName.isEndsWithIgnoreCase(THE_ALSOFT_SUFFIX)) {
88
+            size_t anEnd = aName.getLength() - THE_ALSOFT_SUFFIX.getLength();
89
+            aName = aName.subString(0, anEnd);
90
+        }
91
+
92
+        myDevicesUtf.add(aName);
93
+        myDevicesLoc.push_back(aCName);
94
+        aDevicesNames += aCName.length() + 1;
95
     }
96
-    if(myDevicesList.isEmpty()) {
97
-        myDevicesList.add("None"); // append dummy device
98
+    if(myDevicesUtf.isEmpty()) {
99
+        // append dummy device
100
+        myDevicesUtf.add("None");
101
+        myDevicesLoc.push_back("");
102
     }
103
 }
104
 
105
 StALDeviceParam::~StALDeviceParam() {}
106
 
107
 int32_t StALDeviceParam::getValueFromName(const StString& theName) {
108
-    for(size_t anId = 0; anId < myDevicesList.size(); ++anId) {
109
-        if(myDevicesList[anId] == theName) {
110
+    for(size_t anId = 0; anId < myDevicesUtf.size(); ++anId) {
111
+        if(myDevicesUtf[anId] == theName) {
112
             return int32_t(anId);
113
         }
114
     }
115
@@ -160,12 +200,22 @@
116
     return myValue >= 0;
117
 }
118
 
119
-StString StALDeviceParam::getTitle() const {
120
-    if(myDevicesList.isEmpty()) {
121
+StString StALDeviceParam::getUtfTitle() const {
122
+    if(myDevicesUtf.isEmpty()) {
123
         return StString();
124
     }
125
+
126
     int32_t anActive = getValue();
127
-    return myDevicesList[(anActive >= 0 && size_t(anActive) < myDevicesList.size()) ? size_t(anActive) : 0];
128
+    return myDevicesUtf[(anActive >= 0 && size_t(anActive) < myDevicesUtf.size()) ? size_t(anActive) : 0];
129
+}
130
+
131
+std::string StALDeviceParam::getCTitle() const {
132
+    if(myDevicesUtf.isEmpty()) {
133
+        return std::string();
134
+    }
135
+
136
+    int32_t anActive = getValue();
137
+    return myDevicesLoc[(anActive >= 0 && size_t(anActive) < myDevicesUtf.size()) ? size_t(anActive) : 0];
138
 }
139
 
140
 /**
141
@@ -485,6 +535,8 @@
142
     params.ToShowPlayList->signals.onChanged = stSlot(this, &StMoviePlayer::doShowPlayList);
143
     params.ToTrackHead = new StBoolParamNamed(true,  tr(MENU_VIEW_TRACK_HEAD));
144
     params.ToShowFps   = new StBoolParamNamed(false, tr(MENU_FPS_METER));
145
+    params.ToShowMenu  = new StBoolParamNamed(true, "Show main menu");
146
+    params.ToShowTopbar= new StBoolParamNamed(true, "Show top toolbar");
147
     params.IsMobileUI  = new StBoolParamNamed(StWindow::isMobile(), "Mobile UI");
148
     params.IsMobileUI->signals.onChanged = stSlot(this, &StMoviePlayer::doScaleHiDPI);
149
     params.IsVSyncOn   = new StBoolParam(true);
150
@@ -496,6 +548,7 @@
151
     params.StartWebUI->changeValues().add(tr(MENU_MEDIA_WEBUI_ONCE));
152
     params.StartWebUI->changeValues().add(tr(MENU_MEDIA_WEBUI_ON));
153
     params.ToPrintWebErrors = new StBoolParam(true);
154
+    params.IsLocalWebUI     = new StBoolParam(false);
155
     params.WebUIPort        = new StInt32Param(8080);
156
     params.audioStream = new StInt32Param(-1);
157
     params.audioStream->signals.onChanged = stSlot(this, &StMoviePlayer::doSwitchAudioStream);
158
@@ -735,7 +788,7 @@
159
         mySettings->saveParam (ST_SETTING_SUBTITLES_PARSER,   params.SubtitlesParser);
160
         mySettings->saveParam (ST_SETTING_SEARCH_SUBS,        params.ToSearchSubs);
161
         mySettings->saveInt32 (ST_SETTING_FPSTARGET,          params.TargetFps);
162
-        mySettings->saveString(ST_SETTING_OPENAL_DEVICE,      params.alDevice->getTitle());
163
+        mySettings->saveString(ST_SETTING_OPENAL_DEVICE,      params.alDevice->getUtfTitle());
164
         mySettings->saveInt32 (ST_SETTING_UPDATES_LAST_CHECK, myLastUpdateDay);
165
         mySettings->saveParam (ST_SETTING_UPDATES_INTERVAL,   params.checkUpdatesDays);
166
         mySettings->saveParam (ST_SETTING_SRCFORMAT,          params.srcFormat);
167
@@ -752,7 +805,9 @@
168
         mySettings->saveParam (ST_SETTING_GPU_DECODING,       params.UseGpu);
169
 
170
         mySettings->saveParam (ST_SETTING_WEBUI_ON,           params.StartWebUI);
171
-        mySettings->saveParam (ST_SETTING_WEBUI_PORT,         params.WebUIPort);
172
+        if(!params.IsLocalWebUI->getValue()) {
173
+            mySettings->saveParam (ST_SETTING_WEBUI_PORT,     params.WebUIPort);
174
+        }
175
         mySettings->saveParam (ST_SETTING_WEBUI_ERRORS,       params.ToPrintWebErrors);
176
         mySettings->saveParam (ST_SETTING_SAVE_IMG_TYPE,      params.SnapshotImgType);
177
         mySettings->saveParam (ST_SETTING_EXPERIMENTAL,       params.ToShowExtra);
178
@@ -896,7 +951,14 @@
179
     stMemZero(&aCallbacks, sizeof(aCallbacks));
180
     aCallbacks.begin_request = StMoviePlayer::beginRequestHandler;
181
     const StString aPort = params.WebUIPort->getValue();
182
-    const char* anOptions[] = { "listening_ports", aPort.toCString(), NULL };
183
+
184
+    StString aControlList = "+0.0.0.0/0";
185
+    if(params.IsLocalWebUI->getValue()) {
186
+        aControlList = "-0.0.0.0/0,+127.0.0.0/16";
187
+    }
188
+    const char* anOptions[] = { "listening_ports",     aPort.toCString(),
189
+                                "access_control_list", aControlList.toCString(),
190
+                                NULL };
191
     myWebCtx = mg_start(&aCallbacks, this, anOptions);
192
     if(myWebCtx == NULL
193
     && params.ToPrintWebErrors->getValue()) {
194
@@ -940,6 +1002,17 @@
195
 
196
     // load hot-keys
197
     if(!isReset) {
198
+    #ifdef ST_HAVE_MONGOOSE
199
+        // handle this argument in advance
200
+        if(!myOpenFileInfo.isNull()) {
201
+            StArgument anArgWebuiCmd = myOpenFileInfo->getArgumentsMap()[ST_SETTING_WEBUI_CMDPORT];
202
+            if(anArgWebuiCmd.isValid()) {
203
+                params.IsLocalWebUI->setValue(true);
204
+                params.WebUIPort->setValue(::atol(anArgWebuiCmd.getValue().toCString()));
205
+            }
206
+        }
207
+    #endif
208
+
209
         for(std::map< int, StHandle<StAction> >::iterator anIter = myActions.begin();
210
             anIter != myActions.end(); ++anIter) {
211
             mySettings->loadHotKey(anIter->second);
212
@@ -962,7 +1035,7 @@
213
 
214
     // create the video playback thread
215
     if(!isReset) {
216
-        myVideo = new StVideo(params.alDevice->getTitle(), myLangMap, myPlayList, aTextureQueue, aSubQueue);
217
+        myVideo = new StVideo(params.alDevice->getCTitle(), myLangMap, myPlayList, aTextureQueue, aSubQueue);
218
         myVideo->signals.onError  = stSlot(myMsgQueue.access(), &StMsgQueue::doPushError);
219
         myVideo->signals.onLoaded = stSlot(this,                &StMoviePlayer::doLoaded);
220
         myVideo->params.UseGpu       = params.UseGpu;
221
@@ -1005,16 +1078,57 @@
222
 }
223
 
224
 void StMoviePlayer::parseArguments(const StArgumentsMap& theArguments) {
225
-    StArgument anArgFullscr    = theArguments[ST_SETTING_FULLSCREEN];
226
     StArgument anArgViewMode   = theArguments[ST_SETTING_VIEWMODE];
227
     StArgument anArgSrcFormat  = theArguments[ST_SETTING_SRCFORMAT];
228
     StArgument anArgShuffle    = theArguments[ST_SETTING_SHUFFLE];
229
     StArgument anArgLoopSingle = theArguments[ST_SETTING_LOOP_SINGLE];
230
     StArgument anArgBenchmark  = theArguments[ST_ARGUMENT_BENCHMARK];
231
-
232
-    if(anArgFullscr.isValid()) {
233
-        params.isFullscreen->setValue(!anArgFullscr.isValueOff());
234
+    StArgument anArgShowMenu   = theArguments[ST_ARGUMENT_SHOW_MENU];
235
+    StArgument anArgShowTopbar = theArguments[ST_ARGUMENT_SHOW_TOPBAR];
236
+
237
+    StArgument anArgFullscreen = theArguments[ST_SETTING_FULLSCREEN];
238
+    StArgument anArgMonitor    = theArguments[ST_ARGUMENT_MONITOR];
239
+    StArgument anArgWinLeft    = theArguments[ST_ARGUMENT_WINLEFT];
240
+    StArgument anArgWinTop     = theArguments[ST_ARGUMENT_WINTOP];
241
+    StArgument anArgWinWidth   = theArguments[ST_ARGUMENT_WINWIDTH];
242
+    StArgument anArgWinHeight  = theArguments[ST_ARGUMENT_WINHEIGHT];
243
+    StRect<int32_t> aRect = myWindow->getWindowedPlacement();
244
+    bool toSetRect = false;
245
+    if(anArgMonitor.isValid()) {
246
+        const size_t     aMonId  = (size_t )::atol(anArgMonitor.getValue().toCString());
247
+        const StMonitor& aMonOld = myWindow->getMonitors()[aRect.center()];
248
+        const StMonitor& aMonNew = myWindow->getMonitors()[aMonId];
249
+        if(aMonOld.getId() != aMonNew.getId()) {
250
+            const int aLeft = aRect.left() - aMonOld.getVRect().left();
251
+            const int aTop  = aRect.top()  - aMonOld.getVRect().top();
252
+            aRect.moveLeftTo(aMonNew.getVRect().left() + aLeft);
253
+            aRect.moveTopTo (aMonNew.getVRect().top()  + aTop);
254
+            toSetRect = true;
255
+        }
256
+    }
257
+    if(anArgWinLeft.isValid()) {
258
+        aRect.moveLeftTo(::atol(anArgWinLeft.getValue().toCString()));
259
+        toSetRect = true;
260
+    }
261
+    if(anArgWinTop.isValid()) {
262
+        aRect.moveTopTo(::atol(anArgWinTop.getValue().toCString()));
263
+        toSetRect = true;
264
+    }
265
+    if(anArgWinWidth.isValid()) {
266
+        aRect.right() = aRect.left() + ::atol(anArgWinWidth.getValue().toCString());
267
+        toSetRect = true;
268
+    }
269
+    if(anArgWinHeight.isValid()) {
270
+        aRect.bottom() = aRect.top() + ::atol(anArgWinHeight.getValue().toCString());
271
+        toSetRect = true;
272
+    }
273
+    if(toSetRect) {
274
+        myWindow->setPlacement(aRect, true);
275
+    }
276
+    if(anArgFullscreen.isValid()) {
277
+        params.isFullscreen->setValue(!anArgFullscreen.isValueOff());
278
     }
279
+
280
     if(anArgViewMode.isValid()) {
281
         myPlayList->changeDefParams().ViewingMode = StStereoParams::GET_VIEW_MODE_FROM_STRING(anArgViewMode.getValue());
282
     }
283
@@ -1031,6 +1145,12 @@
284
         myIsBenchmark = !anArgBenchmark.isValueOff();
285
         myVideo->setBenchmark(myIsBenchmark);
286
     }
287
+    if(anArgShowMenu.isValid()) {
288
+        params.ToShowMenu->setValue(!anArgShowMenu.isValueOff());
289
+    }
290
+    if(anArgShowTopbar.isValid()) {
291
+        params.ToShowTopbar->setValue(!anArgShowTopbar.isValueOff());
292
+    }
293
 }
294
 
295
 bool StMoviePlayer::open() {
296
@@ -1312,19 +1432,91 @@
297
 }
298
 
299
 void StMoviePlayer::doFileDrop(const StDNDropEvent& theEvent) {
300
-    const StString aFilePath = theEvent.File;
301
-    if(myPlayList->checkExtension(aFilePath)) {
302
-        const size_t aRecent = myPlayList->findRecent(aFilePath);
303
-        if(aRecent != size_t(-1)) {
304
-            doOpenRecent(aRecent);
305
+    if(theEvent.NbFiles == 0) {
306
+        return;
307
+    }
308
+
309
+    const StString aFile1 = theEvent.Files[0];
310
+    const StString aFile2 = theEvent.NbFiles > 1 ? theEvent.Files[1] : "";
311
+    const StString anExt1 = StFileNode::getExtension(aFile1);
312
+    if(theEvent.NbFiles == 1
313
+    || StFolder::isFolder(aFile1)) {
314
+        // attach subtitle to currently opened item
315
+        for(size_t anExtId = 0; anExtId < myVideo->getMimeListSubtitles().size(); ++anExtId) {
316
+            if(!anExt1.isEqualsIgnoreCase(myVideo->getMimeListSubtitles()[anExtId].getExtension())) {
317
+                continue;
318
+            }
319
+
320
+            StHandle<StFileNode> aCurrFile = myPlayList->getCurrentFile();
321
+            if(aCurrFile.isNull()) {
322
+                ST_ERROR_LOG("Can not attach subtitles");
323
+                return;
324
+            }
325
+
326
+            myPlayList->addToNode(aCurrFile, aFile1);
327
+            myAudioOnLoad = myVideo->params.activeAudio->getValue();
328
+            mySubsOnLoad  = myVideo->params.activeSubtitles->getListSize();
329
+            mySeekOnLoad  = myVideo->getPts();
330
+            doUpdateStateLoading();
331
+            myVideo->pushPlayEvent(ST_PLAYEVENT_RESUME);
332
+            myVideo->doLoadNext();
333
             return;
334
         }
335
 
336
-        myPlayList->open(aFilePath);
337
-        doUpdateStateLoading();
338
-        myVideo->pushPlayEvent(ST_PLAYEVENT_RESUME);
339
-        myVideo->doLoadNext();
340
+        // just open the path
341
+        if(myPlayList->checkExtension(aFile1)) {
342
+            const size_t aRecent = myPlayList->findRecent(aFile1);
343
+            if(aRecent != size_t(-1)) {
344
+                doOpenRecent(aRecent);
345
+                return;
346
+            }
347
+
348
+            myPlayList->open(aFile1);
349
+            doUpdateStateLoading();
350
+            myVideo->pushPlayEvent(ST_PLAYEVENT_RESUME);
351
+            myVideo->doLoadNext();
352
+        }
353
+        return;
354
+    } else if(theEvent.NbFiles == 2
355
+          && !StFolder::isFolder(aFile2)
356
+          &&  myPlayList->checkExtension(aFile2)) {
357
+        // handle stereopair
358
+        StString anExt2 = StFileNode::getExtension(aFile2);
359
+        int aNbVideos = 0;
360
+        for(size_t anExtId = 0; anExtId < myVideo->getMimeListVideo().size(); ++anExtId) {
361
+            if(!anExt1.isEqualsIgnoreCase(myVideo->getMimeListVideo()[anExtId].getExtension())) {
362
+                ++aNbVideos;
363
+                break;
364
+            }
365
+        }
366
+        for(size_t anExtId = 0; anExtId < myVideo->getMimeListVideo().size(); ++anExtId) {
367
+            if(!anExt2.isEqualsIgnoreCase(myVideo->getMimeListVideo()[anExtId].getExtension())) {
368
+                ++aNbVideos;
369
+                break;
370
+            }
371
+        }
372
+
373
+        if(aNbVideos == 2) {
374
+            myVideo->getPlayList().clear();
375
+            myVideo->getPlayList().addOneFile(aFile1, aFile2);
376
+            doUpdateStateLoading();
377
+            myVideo->pushPlayEvent(ST_PLAYEVENT_RESUME);
378
+            myVideo->doLoadNext();
379
+            return;
380
+        }
381
+    }
382
+
383
+    myVideo->getPlayList().clear();
384
+    for(uint32_t aFileIter = 0; aFileIter < theEvent.NbFiles; ++aFileIter) {
385
+        StString aPath(theEvent.Files[aFileIter]);
386
+        if(!StFolder::isFolder(aPath)
387
+        && myPlayList->checkExtension(aPath)) {
388
+            myVideo->getPlayList().addOneFile(aPath, StMIME());
389
+        }
390
     }
391
+    doUpdateStateLoading();
392
+    myVideo->pushPlayEvent(ST_PLAYEVENT_RESUME);
393
+    myVideo->doLoadNext();
394
 }
395
 
396
 void StMoviePlayer::doNavigate(const StNavigEvent& theEvent) {
397
@@ -1341,15 +1533,15 @@
398
     }
399
 
400
     if(myVideo->isDisconnected() || myToUpdateALList) {
401
-        const StString aPrevDev = params.alDevice->getTitle();
402
+        const StString aPrevDev = params.alDevice->getUtfTitle();
403
         params.alDevice->initList();
404
         myGUI->updateOpenALDeviceMenu();
405
         // switch audio device
406
         if(!params.alDevice->init(aPrevDev)) {
407
             // select first existing device if any
408
-            params.alDevice->init(params.alDevice->getTitle());
409
+            params.alDevice->init(params.alDevice->getUtfTitle());
410
         }
411
-        myVideo->switchAudioDevice(params.alDevice->getTitle());
412
+        myVideo->switchAudioDevice(params.alDevice->getCTitle());
413
         myToUpdateALList = false;
414
     }
415
     if(myPlayList->isRecentChanged()) {
416
@@ -1395,7 +1587,6 @@
417
     }
418
 
419
     // re-create GUI when necessary
420
-    const bool hasVideoStream = myVideo->hasVideoStream();
421
     if(params.ScaleHiDPI->setValue(myWindow->getScaleFactor())
422
     || myToRecreateMenu) {
423
         StHandle<StGLTextureQueue> aTextureQueue;
424
@@ -1404,31 +1595,10 @@
425
         myToRecreateMenu = false;
426
     }
427
 
428
-    const bool isMouseMove = myWindow->isMouseMoved();
429
     if(myEventLoaded.checkReset()) {
430
         doUpdateStateLoaded();
431
     }
432
 
433
-    if(myIsBenchmark
434
-    || !params.ToLimitFps->getValue()) {
435
-        // do not limit FPS
436
-        myWindow->setTargetFps(-1.0);
437
-    } else if(params.TargetFps >= 1
438
-           && params.TargetFps <= 3) {
439
-        // set rendering FPS to 2x averageFPS
440
-        double aTargetFps = myVideo->getAverFps();
441
-        if(aTargetFps < 17.0
442
-        || aTargetFps > 120.0) {
443
-            aTargetFps = 0.0;
444
-        } else if(aTargetFps < 40.0) {
445
-            aTargetFps *= double(params.TargetFps);
446
-        }
447
-        myWindow->setTargetFps(aTargetFps);
448
-    } else {
449
-        // set rendering FPS to set value in settings
450
-        myWindow->setTargetFps(double(params.TargetFps));
451
-    }
452
-
453
     if(myToCheckUpdates && !myUpdates.isNull() && myUpdates->isInitialized()) {
454
         if(myUpdates->isNeedUpdate()) {
455
             myGUI->showUpdatesNotify();
456
@@ -1453,7 +1623,7 @@
457
     if(myGUI->mySeekBar != NULL) {
458
         myGUI->mySeekBar->setProgress(GLfloat(aPosition));
459
     }
460
-    myGUI->stglUpdate(myWindow->getMousePos(), isMouseMove || !hasVideoStream);
461
+    myGUI->stglUpdate(myWindow->getMousePos());
462
 
463
     // prevent display going to sleep
464
     bool toBlockSleepDisplay = false;
465
@@ -1479,7 +1649,7 @@
466
                 break;
467
             }
468
             case BLOCK_SLEEP_FULLSCREEN: {
469
-                toBlockSleepDisplay = myWindow->isFullScreen();;
470
+                toBlockSleepDisplay = myWindow->isFullScreen();
471
                 toBlockSleepSystem  = toBlockSleepDisplay;
472
                 break;
473
             }
474
@@ -1500,6 +1670,33 @@
475
         myWindow->setStereoOutput(!aParams->isMono()
476
                             && (myGUI->myImage->params.displayMode->getValue() == StGLImageRegion::MODE_STEREO));
477
     }
478
+
479
+    if(myIsBenchmark
480
+    || !params.ToLimitFps->getValue()) {
481
+        // do not limit FPS
482
+        myWindow->setTargetFps(-1.0);
483
+    } else if(params.TargetFps >= 1
484
+           && params.TargetFps <= 3) {
485
+        // set rendering FPS to 2x averageFPS
486
+        double aTargetFps = myVideo->getAverFps();
487
+        if(aTargetFps < 17.0
488
+        || aTargetFps > 120.0) {
489
+            aTargetFps = 0.0;
490
+        } else if(aTargetFps < 40.0) {
491
+            aTargetFps *= double(params.TargetFps);
492
+        }
493
+
494
+        if(myWindow->toTrackOrientation()) {
495
+            // do not limit FPS within head-tracking mode
496
+            aTargetFps = 0.0;
497
+        }
498
+
499
+        myWindow->setTargetFps(aTargetFps);
500
+    } else {
501
+        // set rendering FPS to set value in settings
502
+        myWindow->setTargetFps(double(params.TargetFps));
503
+    }
504
+
505
 }
506
 
507
 void StMoviePlayer::doUpdateOpenALDeviceList(const size_t ) {
508
@@ -1582,7 +1779,7 @@
509
 
510
 void StMoviePlayer::doSwitchAudioDevice(const int32_t /*theDevId*/) {
511
     if(!myVideo.isNull()) {
512
-        myVideo->switchAudioDevice(params.alDevice->getTitle());
513
+        myVideo->switchAudioDevice(params.alDevice->getCTitle());
514
     }
515
 }
516
 
517
@@ -1946,6 +2143,18 @@
518
                 }
519
             }
520
         }
521
+    } else if(anURI.isEquals(stCString("/action"))) {
522
+        if(!params.IsLocalWebUI->getValue()) {
523
+            aContent = "Error: command interace is disabled!";
524
+        } else {
525
+            const int anActionId = getActionIdFromName(aQuery);
526
+            if(anActionId != -1) {
527
+                invokeAction(anActionId);
528
+                aContent = "Action has been invoked";
529
+            } else {
530
+                aContent = "Error: unknown action";
531
+            }
532
+        }
533
     } else {
534
         aContent = StString("query_string: '") + aQuery + "'\n"
535
                  + StString("uri: '") + anURI + "'";
536
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayer.h -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayer.h Changed
65
 
1
@@ -29,6 +29,8 @@
2
 
3
 #include <StGLWidgets/StGLImageRegion.h>
4
 
5
+#include <vector>
6
+
7
 // forward declarations
8
 class StCheckUpdates;
9
 class StFileNode;
10
@@ -56,9 +58,9 @@
11
     ST_LOCAL StALDeviceParam();
12
 
13
     /**
14
-     * Desctructor.
15
+     * Destructor.
16
      */
17
-    ST_LOCAL ~StALDeviceParam();
18
+    ST_LOCAL virtual ~StALDeviceParam();
19
 
20
     ST_LOCAL void initList();
21
 
22
@@ -69,18 +71,24 @@
23
     /**
24
      * Returns title for active AL device.
25
      */
26
-    ST_LOCAL StString getTitle() const;
27
+    ST_LOCAL StString getUtfTitle() const;
28
+
29
+    /**
30
+     * Returns title for active AL device.
31
+     */
32
+    ST_LOCAL std::string getCTitle() const;
33
 
34
     /**
35
      * Return list of available translations.
36
      */
37
     ST_LOCAL const StArrayList<StString>& getList() const {
38
-        return myDevicesList;
39
+        return myDevicesUtf;
40
     }
41
 
42
         private:
43
 
44
-    StArrayList<StString> myDevicesList;
45
+    std::vector<std::string> myDevicesLoc;
46
+    StArrayList<StString>    myDevicesUtf;
47
 
48
 };
49
 
50
@@ -217,11 +225,14 @@
51
         StHandle<StBoolParam>     ToTrackHead;      //!< enable/disable head-tracking
52
         StHandle<StBoolParam>     ToShowPlayList;   //!< display playlist
53
         StHandle<StBoolParam>     ToShowFps;        //!< display FPS meter
54
+        StHandle<StBoolParam>     ToShowMenu;       //!< show main menu
55
+        StHandle<StBoolParam>     ToShowTopbar;     //!< show topbar
56
         StHandle<StBoolParam>     IsMobileUI;       //!< display mobile interface
57
         StHandle<StBoolParam>     ToLimitFps;       //!< limit CPU usage or not
58
         StHandle<StBoolParam>     IsVSyncOn;        //!< flag to use VSync
59
         StHandle<StEnumParam>     StartWebUI;       //!< to start Web UI or not
60
         StHandle<StBoolParam>     ToPrintWebErrors; //!< print Web UI starting errors
61
+        StHandle<StBoolParam>     IsLocalWebUI;     //!< restrict remote access to 127.0.0.0
62
         StHandle<StInt32Param>    WebUIPort;        //!< port to start Web UI
63
         StHandle<StInt32Param>    audioStream;      //!< active Audio stream
64
         StHandle<StInt32Param>    subtitlesStream;  //!< active Subtitles stream
65
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayer.vcxproj -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayer.vcxproj Changed
45
 
1
@@ -96,7 +96,7 @@
2
       <PreprocessorDefinitions>ST_HAVE_STCONFIG;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
3
     </ResourceCompile>
4
     <Link>
5
-      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
6
+      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;Ole32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
7
       <SuppressStartupBanner>true</SuppressStartupBanner>
8
       <AdditionalLibraryDirectories>..\3rdparty\lib\WIN_vc_x86;..\lib\WIN_vc_x86;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
9
       <SubSystem>Windows</SubSystem>
10
@@ -130,7 +130,7 @@
11
       <PreprocessorDefinitions>ST_HAVE_STCONFIG;_CRT_SECURE_NO_WARNINGS;_DEBUG;ST_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
12
     </ResourceCompile>
13
     <Link>
14
-      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
15
+      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;Ole32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
16
       <SuppressStartupBanner>true</SuppressStartupBanner>
17
       <AdditionalLibraryDirectories>..\3rdparty\lib\WIN_vc_x86_DEBUG;..\lib\WIN_vc_x86_DEBUG;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
18
       <GenerateDebugInformation>true</GenerateDebugInformation>
19
@@ -164,7 +164,7 @@
20
       <PreprocessorDefinitions>ST_HAVE_STCONFIG;_CRT_SECURE_NO_WARNINGS;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
21
     </ResourceCompile>
22
     <Link>
23
-      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
24
+      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;Ole32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
25
       <SuppressStartupBanner>true</SuppressStartupBanner>
26
       <AdditionalLibraryDirectories>..\3rdparty\lib\WIN_vc_AMD64;..\lib\WIN_vc_AMD64;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
27
       <SubSystem>Windows</SubSystem>
28
@@ -198,7 +198,7 @@
29
       <PreprocessorDefinitions>ST_HAVE_STCONFIG;_CRT_SECURE_NO_WARNINGS;_DEBUG;ST_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
30
     </ResourceCompile>
31
     <Link>
32
-      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
33
+      <AdditionalDependencies>opengl32.lib;OpenAL32.lib;user32.lib;gdi32.lib;Advapi32.lib;Comdlg32.lib;Shell32.lib;Ole32.lib;avutil.lib;avformat.lib;avcodec.lib;swscale.lib;freetype.lib;libwebp.lib;StGLWidgets.lib;StShared.lib;StCore.lib;StOutAnaglyph.lib;StOutDual.lib;StOutIZ3D.lib;StOutInterlace.lib;StOutPageFlip.lib;StOutDistorted.lib;%(AdditionalDependencies)</AdditionalDependencies>
34
       <SuppressStartupBanner>true</SuppressStartupBanner>
35
       <AdditionalLibraryDirectories>..\3rdparty\lib\WIN_vc_AMD64_DEBUG;..\lib\WIN_vc_AMD64_DEBUG;$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
36
       <GenerateDebugInformation>true</GenerateDebugInformation>
37
@@ -214,6 +214,7 @@
38
     <ClCompile Include="StVideo\StSubtitleQueue.cpp" />
39
     <ClCompile Include="StVideo\StSubtitlesASS.cpp" />
40
     <ClCompile Include="StVideo\StVideo.cpp" />
41
+    <ClCompile Include="StVideo\StVideoDxva2.cpp" />
42
     <ClCompile Include="StVideo\StVideoQueue.cpp" />
43
     <ClCompile Include="StVideo\StVideoTimer.cpp" />
44
     <ClCompile Include="stMongoose.c" />
45
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayer.vcxproj.filters -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayer.vcxproj.filters Changed
11
 
1
@@ -30,6 +30,9 @@
2
     <ClCompile Include="StVideo\StVideo.cpp">
3
       <Filter>Source files</Filter>
4
     </ClCompile>
5
+    <ClCompile Include="StVideo\StVideoDxva2.cpp">
6
+      <Filter>Source files</Filter>
7
+    </ClCompile>
8
     <ClCompile Include="StVideo\StVideoQueue.cpp">
9
       <Filter>Source files</Filter>
10
     </ClCompile>
11
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayerGUI.cpp -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayerGUI.cpp Changed
285
 
1
@@ -70,9 +70,9 @@
2
     static const int DISPL_X_REGION_UPPER  = 32;
3
     static const int DISPL_X_REGION_BOTTOM = 52;
4
 
5
-    static const StGLVec3 aBlack(0.0f, 0.0f, 0.0f);
6
-    static const StGLVec3 aGreen(0.4f, 0.8f, 0.4f);
7
-    static const StGLVec3 aRed  (1.0f, 0.0f, 0.0f);
8
+    static const StGLVec3 aBlack (0.0f, 0.0f, 0.0f);
9
+    static const StGLVec3 aGreen (0.0f, 0.6f, 0.4f);
10
+    static const StGLVec3 aRed   (1.0f, 0.0f, 0.0f);
11
 
12
 }
13
 
14
@@ -150,10 +150,10 @@
15
     myBtnInfo->changeMargins() = aButtonMargins;
16
 
17
     StGLTextureButton* aSrcBtn = new StGLTextureButton(myPanelUpper, aLeft + (aBtnIter++) * anIconStep, aTop,
18
-                                                       StGLCorner(ST_VCORNER_TOP, ST_HCORNER_LEFT), StFormat_NB);
19
+                                                       StGLCorner(ST_VCORNER_TOP, ST_HCORNER_LEFT), StFormat_NB + 1);
20
     aSrcBtn->changeMargins() = aButtonMargins;
21
     aSrcBtn->signals.onBtnClick += stSlot(this, &StMoviePlayerGUI::doDisplayStereoFormatCombo);
22
-    const StString aSrcTextures[StFormat_NB] = {
23
+    const StString aSrcTextures[StFormat_NB + 1] = {
24
         iconTexture(stCString("menuMono"),           anIconSize),
25
         iconTexture(stCString("menuSbsLR"),          anIconSize),
26
         iconTexture(stCString("menuSbsRL"),          anIconSize),
27
@@ -166,9 +166,10 @@
28
         iconTexture(stCString("menuRedCyanLR"),      anIconSize),
29
         iconTexture(stCString("menuGreenMagentaLR"), anIconSize),
30
         iconTexture(stCString("menuYellowBlueLR"),   anIconSize),
31
-        iconTexture(stCString("menuTiledLR"),        anIconSize)
32
+        iconTexture(stCString("menuTiledLR"),        anIconSize),
33
+        iconTexture(stCString("menuAuto"),           anIconSize)
34
     };
35
-    aSrcBtn->setTexturePath(aSrcTextures, StFormat_NB);
36
+    aSrcBtn->setTexturePath(aSrcTextures, StFormat_NB + 1);
37
     aSrcBtn->setDrawShadow(true);
38
     myBtnSrcFrmt = aSrcBtn;
39
 
40
@@ -374,7 +375,11 @@
41
 #endif
42
 
43
 #ifdef ST_HAVE_MONGOOSE
44
-    aMenuMedia->addItem(tr(MENU_MEDIA_WEBUI) + ":" + myPlugin->params.WebUIPort->getValue(), aMenuWebUI);
45
+    StString aWebUiItem = tr(MENU_MEDIA_WEBUI) + ":" + myPlugin->params.WebUIPort->getValue();
46
+    if(myPlugin->params.IsLocalWebUI->getValue()) {
47
+        aWebUiItem += " [CMD]";
48
+    }
49
+    aMenuMedia->addItem(aWebUiItem, aMenuWebUI);
50
 #endif
51
     aMenuMedia->addItem(tr(MENU_MEDIA_QUIT), myPlugin->getAction(StMoviePlayer::Action_Quit));
52
     return aMenuMedia;
53
@@ -515,6 +520,10 @@
54
 StGLMenu* StMoviePlayerGUI::createWebUIMenu() {
55
     StGLMenu* aMenu = new StGLMenu(this, 0, 0, StGLMenu::MENU_VERTICAL);
56
     for(size_t anIter = 0; anIter < myPlugin->params.StartWebUI->getValues().size(); ++anIter) {
57
+        if(myPlugin->params.IsLocalWebUI->getValue()
58
+        && anIter == StMoviePlayer::WEBUI_AUTO) {
59
+            continue;
60
+        }
61
         aMenu->addItem(myPlugin->params.StartWebUI->getValues()[anIter], myPlugin->params.StartWebUI, (int32_t )anIter);
62
     }
63
     aMenu->addItem(tr(MENU_MEDIA_WEBUI_SHOW_ERRORS), myPlugin->params.ToPrintWebErrors);
64
@@ -1187,10 +1196,10 @@
65
     myBtnOpen->changeMargins() = aButtonMargins;
66
 
67
     StGLTextureButton* aSrcBtn = new StGLTextureButton(myPanelUpper, (aBtnIter++) * myIconStep, 0,
68
-                                                       StGLCorner(ST_VCORNER_TOP, ST_HCORNER_LEFT), StFormat_NB);
69
+                                                       StGLCorner(ST_VCORNER_TOP, ST_HCORNER_LEFT), StFormat_NB + 1);
70
     aSrcBtn->changeMargins() = aButtonMargins;
71
     aSrcBtn->signals.onBtnClick += stSlot(this, &StMoviePlayerGUI::doDisplayStereoFormatCombo);
72
-    const StString aSrcTextures[StFormat_NB] = {
73
+    const StString aSrcTextures[StFormat_NB + 1] = {
74
         iconTexture(stCString("menuMono"),           anIconSize),
75
         iconTexture(stCString("menuSbsLR"),          anIconSize),
76
         iconTexture(stCString("menuSbsRL"),          anIconSize),
77
@@ -1203,9 +1212,10 @@
78
         iconTexture(stCString("menuRedCyanLR"),      anIconSize),
79
         iconTexture(stCString("menuGreenMagentaLR"), anIconSize),
80
         iconTexture(stCString("menuYellowBlueLR"),   anIconSize),
81
-        iconTexture(stCString("menuTiledLR"),        anIconSize)
82
+        iconTexture(stCString("menuTiledLR"),        anIconSize),
83
+        iconTexture(stCString("menuAuto"),           anIconSize)
84
     };
85
-    aSrcBtn->setTexturePath(aSrcTextures, StFormat_NB);
86
+    aSrcBtn->setTexturePath(aSrcTextures, StFormat_NB + 1);
87
     aSrcBtn->setDrawShadow(true);
88
     myBtnSrcFrmt = aSrcBtn;
89
 
90
@@ -1304,6 +1314,12 @@
91
 
92
     StGLOpenFile* aDialog = new StGLOpenFile(this, tr(DIALOG_OPEN_FILE), tr(BUTTON_CLOSE));
93
     aDialog->setMimeList(myPlugin->myVideo->getMimeListVideo());
94
+#if defined(_WIN32)
95
+    //
96
+#else
97
+    aDialog->addHotItem("/", "Root");
98
+#endif
99
+    aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_SdCard));
100
     aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Downloads));
101
     aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Videos));
102
     aDialog->addHotItem(getResourceManager()->getFolder(StResourceManager::FolderId_Music));
103
@@ -1368,6 +1384,7 @@
104
     anItem->setIcon(stCMenuIcon("actionSettings"));
105
     anItem->signals.onItemClick += stSlot(this, &StMoviePlayerGUI::doMobileSettings);
106
     aMenu->stglInit();
107
+    setFocus(aMenu);
108
 }
109
 
110
 StMoviePlayerGUI::StMoviePlayerGUI(StMoviePlayer*  thePlugin,
111
@@ -1467,8 +1484,7 @@
112
     //
113
 }
114
 
115
-void StMoviePlayerGUI::stglUpdate(const StPointD_t& thePointZo,
116
-                                  bool              theIsMouseMoved) {
117
+void StMoviePlayerGUI::stglUpdate(const StPointD_t& thePointZo) {
118
     if(mySeekBar != NULL
119
     && myPanelBottom != NULL
120
     && myTimeBox->wasResized()) {
121
@@ -1482,7 +1498,7 @@
122
         myBtnSubs->getTrackedValue()->setValue(myPlugin->params.subtitlesStream->getValue() != -1);
123
     }
124
 
125
-    setVisibility(thePointZo, theIsMouseMoved);
126
+    setVisibility(thePointZo);
127
     StGLRootWidget::stglUpdate(thePointZo);
128
     if(myVolumeBar != NULL) {
129
         char aBuff[128];
130
@@ -1635,21 +1651,28 @@
131
 
132
 }
133
 
134
-void StMoviePlayerGUI::setVisibility(const StPointD_t& theCursor,
135
-                                     bool              theIsMouseMoved) {
136
+void StMoviePlayerGUI::setVisibility(const StPointD_t& theCursor) {
137
     const bool toShowPlayList = myPlugin->params.ToShowPlayList->getValue();
138
+    const bool hasMainMenu    = myPlugin->params.ToShowMenu->getValue()
139
+                             && myMenuRoot != NULL;
140
+    const bool hasUpperPanel  = myPlugin->params.ToShowTopbar->getValue()
141
+                             && myPanelUpper != NULL;
142
+
143
     const int  aRootSizeY     = getRectPx().height();
144
     const bool hasVideo       = myPlugin->myVideo->hasVideoStream();
145
+    const bool isMouseActive  = myWindow->isMouseMoved();
146
+    const double aStillTime   = myVisibilityTimer.getElapsedTime();
147
     StHandle<StStereoParams> aParams = myImage->getSource();
148
-    myIsVisibleGUI = theIsMouseMoved
149
+    myIsVisibleGUI = !hasVideo
150
+        || isMouseActive
151
         || aParams.isNull()
152
-        || myVisibilityTimer.getElapsedTime() < 2.0
153
-        || (myPanelUpper  != NULL && myPanelUpper ->isPointIn(theCursor))
154
+        || aStillTime < 2.0
155
+        || (hasUpperPanel && myPanelUpper->isPointIn(theCursor))
156
         || (myPanelBottom != NULL && int(aRootSizeY * theCursor.y()) > (aRootSizeY - 2 * myPanelBottom->getRectPx().height())
157
                                   && theCursor.y() < 1.0)
158
         || (mySeekBar     != NULL && mySeekBar    ->isPointIn(theCursor))
159
         || (myPlayList    != NULL && toShowPlayList && myPlayList->isPointIn(theCursor))
160
-        || (myMenuRoot    != NULL && myMenuRoot->isActive());
161
+        || (hasMainMenu           && myMenuRoot->isActive());
162
     if(!myIsVisibleGUI
163
      && myBtnPlay != NULL
164
      && myBtnPlay->getFaceId() == 0
165
@@ -1658,19 +1681,19 @@
166
         myIsVisibleGUI = true;
167
     }
168
     const float anOpacity = (float )myVisLerp.perform(myIsVisibleGUI, false);
169
-    if(theIsMouseMoved) {
170
+    if(isMouseActive) {
171
         myVisibilityTimer.restart();
172
     }
173
 
174
     if(myMenuRoot != NULL) {
175
-        myMenuRoot->setOpacity(anOpacity, false);
176
+        myMenuRoot->setOpacity(hasMainMenu ? anOpacity : 0.0f, false);
177
+    }
178
+    if(myPanelUpper != NULL) {
179
+        myPanelUpper->setOpacity(hasUpperPanel ? anOpacity : 0.0f, true);
180
     }
181
     if(mySeekBar != NULL) {
182
         mySeekBar->setOpacity(anOpacity, false);
183
     }
184
-    if(myPanelUpper != NULL) {
185
-        myPanelUpper->setOpacity(anOpacity, true);
186
-    }
187
     if(myPanelBottom != NULL) {
188
         myPanelBottom->setOpacity(anOpacity, true);
189
     }
190
@@ -1680,23 +1703,46 @@
191
         myPlayList->setOpacity(anOpacity, true);
192
     }
193
 
194
+    const StPlayList::CurrentPosition aCurrPos = myPlugin->myVideo->getPlayList().getCurrentPosition();
195
+    if(myBtnPrev != NULL) {
196
+        myBtnPrev->setOpacityScale(aCurrPos == StPlayList::CurrentPosition_Middle
197
+                                || aCurrPos == StPlayList::CurrentPosition_Last ? 1.0f : 0.5f);
198
+    }
199
+    if(myBtnNext != NULL) {
200
+        myBtnNext->setOpacityScale(aCurrPos == StPlayList::CurrentPosition_Middle
201
+                                || aCurrPos == StPlayList::CurrentPosition_First ? 1.0f : 0.5f);
202
+    }
203
+    if(myBtnPlay != NULL) {
204
+        myBtnPlay->setOpacityScale(aCurrPos != StPlayList::CurrentPosition_NONE ? 1.0f : 0.5f);
205
+    }
206
+
207
     StFormat aSrcFormat = (StFormat )myPlugin->params.srcFormat->getValue();
208
-    if(aSrcFormat == StFormat_AUTO
209
-    && !aParams.isNull()) {
210
+    if( aSrcFormat == StFormat_AUTO
211
+    && !aParams.isNull()
212
+    &&  hasVideo) {
213
         aSrcFormat = aParams->StereoFormat;
214
     }
215
     if(!aParams.isNull()
216
-     && myImage->params.swapLR->getValue()) {
217
+     && myImage->params.swapLR->getValue()
218
+     && hasVideo) {
219
         aSrcFormat = st::formatReversed(aSrcFormat);
220
     }
221
     if(myBtnSrcFrmt != NULL) {
222
-        myBtnSrcFrmt->setFaceId(aSrcFormat != StFormat_AUTO ? aSrcFormat : StFormat_Mono);
223
+        size_t aFaceId = aSrcFormat;
224
+        if(aSrcFormat == StFormat_AUTO) {
225
+            aFaceId = hasVideo ? StFormat_Mono : StFormat_NB;
226
+        }
227
+        myBtnSrcFrmt->setOpacityScale(hasVideo ? 1.0f : 0.5f);
228
+        myBtnSrcFrmt->setFaceId(aFaceId);
229
     }
230
     if(myBtnFullScr != NULL) {
231
         myBtnFullScr->setFaceId(myPlugin->params.isFullscreen->getValue() ? 1 : 0);
232
     }
233
     if(myBtnSwapLR != NULL) {
234
-        myBtnSwapLR->setOpacity(aSrcFormat != StFormat_Mono ? anOpacity : 0.0f, false);
235
+        const bool hasInput = hasVideo
236
+                           && aSrcFormat != StFormat_Mono
237
+                           && aSrcFormat != StFormat_AUTO;
238
+        myBtnSwapLR->setOpacity(hasInput ? anOpacity : 0.0f, false);
239
     }
240
 
241
     const StStereoParams::ViewMode aViewMode = hasVideo && !aParams.isNull()
242
@@ -1721,7 +1767,7 @@
243
     myImage->setDeviceOrientation(StGLQuaternion((float )aQ.x(), (float )aQ.y(), (float )aQ.z(), (float )aQ.w()));
244
 
245
     if(myDescr != NULL) {
246
-        myDescr->setOpacity(1.0f, false);
247
+        bool wasEmpty = myDescr->getText().isEmpty();
248
         if(::isPointIn(myBtnOpen, theCursor)) {
249
             myDescr->setText(tr(FILE_VIDEO_OPEN));
250
         } else if(::isPointIn(myBtnInfo,   theCursor)) {
251
@@ -1760,8 +1806,19 @@
252
         } else if(::isPointIn(myBtnFullScr, theCursor)) {
253
             myDescr->setText(tr(FULLSCREEN));
254
         } else {
255
-            myDescr->setOpacity(0.0f, false);
256
+            myDescr->setText("");
257
         }
258
+
259
+        if(wasEmpty
260
+        && aStillTime < 1.0) {
261
+            myDescr->setText("");
262
+        } else if(getFocus() != NULL
263
+               || (myMenuRoot != NULL && myMenuRoot->isActive())) {
264
+            // hide within active dialog - should be replaced by z-layer check
265
+            myDescr->setText("");
266
+        }
267
+
268
+        myDescr->setOpacity(!myDescr->getText().isEmpty() ? 1.0f : 0.0f, false);
269
     }
270
 }
271
 
272
@@ -1796,9 +1853,9 @@
273
                                                     -scale(16), 0, StGLCorner(ST_VCORNER_CENTER, ST_HCORNER_RIGHT));
274
             aDelayRange->changeRectPx().bottom() = aDelayRange->getRectPx().top()  + aBuilder.getMenu()->getItemHeight();
275
             aDelayRange->setFormat(stCString("%+01.3f"));
276
-            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Default,  StGLVec3(0.0f, 0.0f, 0.0f));
277
-            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Positive, StGLVec3(0.4f, 0.8f, 0.4f));
278
-            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Negative, StGLVec3(1.0f, 0.0f, 0.0f));
279
+            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Default,  aBlack);
280
+            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Positive, aGreen);
281
+            aDelayRange->setColor(StGLRangeFieldFloat32::FieldColor_Negative, aRed);
282
         }
283
         aBuilder.getMenu()->addItem(tr(MENU_AUDIO_ATTACH))
284
                           ->setIcon(stCMenuIcon("actionOpen"), false)
285
sview-15_10.tar.gz/StMoviePlayer/StMoviePlayerGUI.h -> sview-15_11.tar.gz/StMoviePlayer/StMoviePlayerGUI.h Changed
14
 
1
@@ -111,10 +111,8 @@
2
     ST_LOCAL virtual void stglDraw(unsigned int theView);
3
 
4
     using StGLRootWidget::stglUpdate;
5
-    ST_LOCAL void stglUpdate(const StPointD_t& thePointZo,
6
-                             bool              theIsMouseMoved);
7
-    ST_LOCAL void setVisibility(const StPointD_t& theCursor,
8
-                                bool              theIsMouseMoved);
9
+    ST_LOCAL void stglUpdate(const StPointD_t& thePointZo);
10
+    ST_LOCAL void setVisibility(const StPointD_t& theCursor);
11
 
12
         public:
13
 
14
sview-15_10.tar.gz/StMoviePlayer/StVideo/StALContext.cpp -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StALContext.cpp Changed
23
 
1
@@ -58,18 +58,12 @@
2
     return extList;
3
 }
4
 
5
-bool StALContext::create(const StString& theDeviceName) {
6
-    if(theDeviceName.isEmpty()) {
7
+bool StALContext::create(const std::string& theDeviceName) {
8
+    if(theDeviceName.empty()) {
9
         // open default device
10
         hDevice = alcOpenDevice(NULL);
11
     } else {
12
-    #if defined(_WIN32)
13
-        char aBuffer[ST_MAX_PATH];
14
-        theDeviceName.toLocale(aBuffer, ST_MAX_PATH);
15
-        hDevice = alcOpenDevice(aBuffer);
16
-    #else
17
-        hDevice = alcOpenDevice(theDeviceName.toCString());
18
-    #endif
19
+        hDevice = alcOpenDevice(theDeviceName.c_str());
20
     }
21
     if(hDevice == NULL) {
22
         return false;
23
sview-15_10.tar.gz/StMoviePlayer/StVideo/StALContext.h -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StALContext.h Changed
17
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * StMoviePlayer program is free software: you can redistribute it and/or modify
7
  * it under the terms of the GNU General Public License as published by
8
@@ -66,7 +66,7 @@
9
     /**
10
      * Creates the AL device with specified name.
11
      */
12
-    ST_CPPEXPORT bool create(const StString& theDeviceName = StString());
13
+    ST_CPPEXPORT bool create(const std::string& theDeviceName);
14
 
15
     /**
16
      * Release the AL device.
17
sview-15_10.tar.gz/StMoviePlayer/StVideo/StAVPacketQueue.cpp -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StAVPacketQueue.cpp Changed
43
 
1
@@ -110,10 +110,7 @@
2
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 0, 0))
3
     myGetBuffInit    = myCodecCtx->get_buffer2;
4
 #endif
5
-#if(LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(54, 2, 100))
6
-    myIsAttachedPic = myStream != NULL
7
-                  && (myStream->disposition & AV_DISPOSITION_ATTACHED_PIC) != 0;
8
-#endif
9
+    myIsAttachedPic = stAV::isAttachedPicture(myStream);
10
     return true;
11
 }
12
 
13
@@ -138,7 +135,8 @@
14
     myIsAttachedPic = false;
15
 }
16
 
17
-void StAVPacketQueue::fillCodecInfo(AVCodec* theCodec) {
18
+void StAVPacketQueue::fillCodecInfo(const AVCodec*  theCodec,
19
+                                    const StString& theDescExtra) {
20
     StMutexAuto aLock(myMutexInfo);
21
     if(theCodec == NULL) {
22
         myCodecName.clear();
23
@@ -146,7 +144,7 @@
24
         myCodecStr.clear();
25
     } else {
26
         myCodecName = theCodec->name;
27
-        myCodecDesc = theCodec->long_name;
28
+        myCodecDesc = theCodec->long_name + theDescExtra;
29
         myCodecStr  = StString("[") + myCodecName + stCString("] ") + myCodecDesc;
30
     }
31
 }
32
@@ -247,6 +245,10 @@
33
             myIsPlaying = false;
34
             break;
35
         }
36
+        case ST_PLAYEVENT_NEXT:
37
+        case ST_PLAYEVENT_NONE: {
38
+            break;
39
+        }
40
     }
41
     myPlayEvent = theEventId;
42
     myEventMutex.unlock();
43
sview-15_10.tar.gz/StMoviePlayer/StVideo/StAVPacketQueue.h -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StAVPacketQueue.h Changed
11
 
1
@@ -171,7 +171,8 @@
2
     /**
3
      * Update codec description.
4
      */
5
-    ST_LOCAL void fillCodecInfo(AVCodec* theCodec);
6
+    ST_LOCAL void fillCodecInfo(const AVCodec*  theCodec,
7
+                                const StString& theDescExtra = "");
8
 
9
     /**
10
      * Get codec description.
11
sview-15_10.tar.gz/StMoviePlayer/StVideo/StAudioQueue.cpp -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StAudioQueue.cpp Changed
46
 
1
@@ -135,9 +135,14 @@
2
 }
3
 
4
 bool StAudioQueue::stalInit() {
5
-    StHandle<StString> aDevName = myAlDeviceName;
6
-    if(!myAlCtx.create(*aDevName)) {
7
-        if(!myAlCtx.create()) {
8
+    std::string aDevName;
9
+    {
10
+        StMutexAuto aLock(mySwitchMutex);
11
+        aDevName = myAlDeviceName;
12
+    }
13
+    if(!myAlCtx.create(aDevName)) {
14
+        if(aDevName.empty()
15
+        || !myAlCtx.create("")) {
16
             // retry with default device
17
             return false;
18
         }
19
@@ -236,7 +241,7 @@
20
     return SV_THREAD_RETURN 0;
21
 }
22
 
23
-StAudioQueue::StAudioQueue(const StString& theAlDeviceName)
24
+StAudioQueue::StAudioQueue(const std::string& theAlDeviceName)
25
 : StAVPacketQueue(512),
26
   myPlaybackTimer(false),
27
   myDowntimeEvent(true),
28
@@ -248,7 +253,7 @@
29
   myIsAlValid(ST_AL_INIT_NA),
30
   myToSwitchDev(false),
31
   myIsDisconnected(false),
32
-  myAlDeviceName(new StString(theAlDeviceName)),
33
+  myAlDeviceName(theAlDeviceName),
34
   myAlFormat(AL_FORMAT_STEREO16),
35
   myPrevFormat(AL_FORMAT_STEREO16),
36
   myPrevFrequency(0),
37
@@ -871,7 +876,7 @@
38
         return true;
39
     }
40
 
41
-    myAlDeviceName = new StString();
42
+    myAlDeviceName.clear();
43
     stalDeinit(); // release OpenAL context
44
     myIsAlValid = (stalInit() ? ST_AL_INIT_OK : ST_AL_INIT_KO);
45
     myIsDisconnected = true;
46
sview-15_10.tar.gz/StMoviePlayer/StVideo/StAudioQueue.h -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StAudioQueue.h Changed
37
 
1
@@ -46,7 +46,7 @@
2
 
3
         public: //! @name public API
4
 
5
-    ST_LOCAL StAudioQueue(const StString& theAlDeviceName);
6
+    ST_LOCAL StAudioQueue(const std::string& theAlDeviceName);
7
     ST_LOCAL virtual ~StAudioQueue();
8
 
9
     ST_LOCAL bool isInDowntime() {
10
@@ -107,8 +107,9 @@
11
     /**
12
      * Switch audio device.
13
      */
14
-    ST_LOCAL void switchAudioDevice(const StString& theAlDeviceName) {
15
-        myAlDeviceName = new StString(theAlDeviceName);
16
+    ST_LOCAL void switchAudioDevice(const std::string& theAlDeviceName) {
17
+        StMutexAuto aLock(mySwitchMutex);
18
+        myAlDeviceName = theAlDeviceName;
19
         myToSwitchDev  = true;
20
     }
21
 
22
@@ -277,12 +278,13 @@
23
     StPCMBuffer        myBufferOut;     //!< output  PCM audio buffer
24
     StTimer            myLimitTimer;
25
     volatile IState_t  myIsAlValid;     //!< OpenAL initialization state
26
+    StMutex            mySwitchMutex;   //!< switch audio device lock
27
     volatile bool      myToSwitchDev;   //!< switch audio device flag
28
     volatile bool      myIsDisconnected;//!< audio device disconnection flag
29
 
30
         private: //! @name OpenAL items
31
 
32
-    StHandle<StString> myAlDeviceName;  //!< Output audio device name for OpenAL context initialization
33
+    std::string        myAlDeviceName;  //!< Output audio device name for OpenAL context initialization
34
     StALContext        myAlCtx;         //!< OpenAL context
35
     ALuint             myAlBuffers[NUM_AL_SOURCES][NUM_AL_BUFFERS]; //!< audio buffers
36
     ALuint             myAlSources[NUM_AL_SOURCES];                 //!< audio sources
37
sview-15_10.tar.gz/StMoviePlayer/StVideo/StVideo.cpp -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StVideo.cpp Changed
67
 
1
@@ -37,7 +37,7 @@
2
 
3
 const char* StVideo::ST_VIDEOS_MIME_STRING = ST_VIDEO_PLUGIN_MIME_CHAR;
4
 
5
-StVideo::StVideo(const StString&                   theALDeviceName,
6
+StVideo::StVideo(const std::string&                theALDeviceName,
7
                  const StHandle<StTranslations>&   theLangMap,
8
                  const StHandle<StPlayList>&       thePlayList,
9
                  const StHandle<StGLTextureQueue>& theTextureQueue,
10
@@ -334,7 +334,8 @@
11
                     myFileInfoTmp->Info.add(StArgument(tr(INFO_DURATION),
12
                         StFormatTime::formatSeconds(theInfo.Duration)));
13
                 }
14
-            } else if(!myVideoSlave->isInitialized()) {
15
+            } else if(!myVideoSlave->isInitialized()
16
+                   && !stAV::isAttachedPicture(aStream)) {
17
                 myVideoSlave->init(aFormatCtx, aStreamId, "");
18
                 if(myVideoSlave->isInitialized()) {
19
                     mySlaveCtx    = aFormatCtx;
20
@@ -665,11 +666,9 @@
21
                            const bool       toSeekBack) {
22
     const int aFlags = toSeekBack ? AVSEEK_FLAG_BACKWARD : 0;
23
     AVStream* aStream = theFormatCtx->streams[theStreamId];
24
-#if(LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(54, 2, 100))
25
-    if((aStream->disposition & AV_DISPOSITION_ATTACHED_PIC) != 0) {
26
+    if(stAV::isAttachedPicture(aStream)) {
27
         return false;
28
     }
29
-#endif
30
 
31
     int64_t aSeekTarget = stAV::secondsToUnits(aStream, theSeekPts + stAV::unitsToSeconds(aStream, aStream->start_time));
32
     bool isSeekDone = av_seek_frame(theFormatCtx, theStreamId, aSeekTarget, aFlags) >= 0;
33
@@ -704,10 +703,11 @@
34
     const bool toUseGpu      = params.UseGpu->getValue();
35
     const bool toDecodeSlave = myVideoMaster->getStereoFormatByUser() == StFormat_AUTO
36
                             && mySlaveStream >= 0;
37
+    // keep failed flag
38
+    const bool isGpuFailed   = myVideoMaster->isGpuFailed()
39
+                           || (myVideoSlave->isInitialized() && myVideoSlave->isGpuFailed());
40
     if(toUseGpu      != myVideoMaster->toUseGpu()
41
     || toDecodeSlave != myVideoSlave->isInitialized()) {
42
-        myVideoMaster->setUseGpu(toUseGpu);
43
-        myVideoSlave ->setUseGpu(toUseGpu);
44
         doFlush();
45
         if(myVideoMaster->isInitialized()) {
46
             const StString   aFileNameMaster = myVideoMaster->getFileName();
47
@@ -728,6 +728,9 @@
48
             if(myVideoSlave->isInitialized()) {
49
                 myVideoSlave->deinit();
50
             }
51
+
52
+            myVideoMaster->setUseGpu(toUseGpu, isGpuFailed);
53
+            myVideoSlave ->setUseGpu(toUseGpu, isGpuFailed);
54
             myVideoMaster->init(aCtxMaster, aStreamIdMaster, aFileNameMaster);
55
             myVideoMaster->setSlave(NULL);
56
             if(toDecodeSlave) {
57
@@ -738,6 +741,9 @@
58
             if(toDecodeSlave) {
59
                 myVideoSlave->pushStart();
60
             }
61
+        } else {
62
+            myVideoMaster->setUseGpu(toUseGpu);
63
+            myVideoSlave ->setUseGpu(toUseGpu);
64
         }
65
     }
66
 }
67
sview-15_10.tar.gz/StMoviePlayer/StVideo/StVideo.h -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StVideo.h Changed
26
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * StMoviePlayer program is free software: you can redistribute it and/or modify
7
  * it under the terms of the GNU General Public License as published by
8
@@ -105,7 +105,7 @@
9
     /**
10
      * Main constructor.
11
      */
12
-    ST_LOCAL StVideo(const StString&                   theALDeviceName,
13
+    ST_LOCAL StVideo(const std::string&                theALDeviceName,
14
                      const StHandle<StTranslations>&   theLangMap,
15
                      const StHandle<StPlayList>&       thePlayList,
16
                      const StHandle<StGLTextureQueue>& theTextureQueue,
17
@@ -188,7 +188,7 @@
18
     /**
19
      * Switch audio device.
20
      */
21
-    ST_LOCAL void switchAudioDevice(const StString& theAlDeviceName) {
22
+    ST_LOCAL void switchAudioDevice(const std::string& theAlDeviceName) {
23
         myAudio->switchAudioDevice(theAlDeviceName);
24
     }
25
 
26
sview-15_11.tar.gz/StMoviePlayer/StVideo/StVideoDxva2.cpp Added
703
 
1
@@ -0,0 +1,701 @@
2
+/**
3
+ * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
4
+ *
5
+ * StMoviePlayer program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * StMoviePlayer program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
+ * See the GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public
16
+ * License along with this program.
17
+ * If not, see <http://www.gnu.org/licenses/>.
18
+ */
19
+
20
+#include "StVideoQueue.h"
21
+
22
+#if defined(_WIN32)
23
+
24
+#include <StAV/StAVPacket.h>
25
+#include <StAV/StAVFrame.h>
26
+#include <StAV/StAVBufferPool.h>
27
+#include <StLibrary.h>
28
+
29
+#include <vector>
30
+
31
+#ifdef _MSC_VER
32
+    // nonstandard extension used : nameless struct/union
33
+    #pragma warning(disable : 4201)
34
+#endif
35
+
36
+#include <d3d9.h>
37
+#include <dxva2api.h>
38
+
39
+#ifdef _MSC_VER
40
+    #pragma warning(default : 4201)
41
+#endif
42
+
43
+extern "C" {
44
+
45
+  #include <libavcodec/dxva2.h>
46
+  #include <libavutil/buffer.h>
47
+  #include <libavutil/imgutils.h>
48
+
49
+};
50
+
51
+// define all the GUIDs used directly here,
52
+// to avoid problems with inconsistent dxva2api.h versions in mingw-w64 and different MSVC version
53
+#include <initguid.h>
54
+
55
+DEFINE_GUID(IID_IDirectXVideoDecoderService, 0xfc51a551,0xd5e7,0x11d9,0xaf,0x55,0x00,0x05,0x4e,0x43,0xff,0x02);
56
+
57
+DEFINE_GUID(DXVA2_ModeMPEG2_VLD,      0xee27417f, 0x5e28,0x4e65,0xbe,0xea,0x1d,0x26,0xb5,0x08,0xad,0xc9);
58
+DEFINE_GUID(DXVA2_ModeMPEG2and1_VLD,  0x86695f12, 0x340e,0x4f04,0x9f,0xd3,0x92,0x53,0xdd,0x32,0x74,0x60);
59
+DEFINE_GUID(DXVA2_ModeH264_E,         0x1b81be68, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
60
+DEFINE_GUID(DXVA2_ModeH264_F,         0x1b81be69, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
61
+DEFINE_GUID(DXVADDI_Intel_ModeH264_E, 0x604F8E68, 0x4951,0x4C54,0x88,0xFE,0xAB,0xD2,0x5C,0x15,0xB3,0xD6);
62
+DEFINE_GUID(DXVA2_ModeVC1_D,          0x1b81beA3, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
63
+DEFINE_GUID(DXVA2_ModeVC1_D2010,      0x1b81beA4, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
64
+DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main,  0x5b11d51b, 0x2f4c,0x4452,0xbc,0xc3,0x09,0xf2,0xa1,0x16,0x0c,0xc0);
65
+DEFINE_GUID(DXVA2_NoEncrypt,          0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
66
+DEFINE_GUID(GUID_NULL,                0x00000000, 0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
67
+
68
+struct StDxva2Mode {
69
+    const GUID* guid;
70
+    AVCodecID   codec;
71
+
72
+    StDxva2Mode(const GUID&     theGuid,
73
+                const AVCodecID theCodec)
74
+    : guid(&theGuid),
75
+      codec(theCodec) {}
76
+};
77
+
78
+struct StDxva2SurfaceInfo {
79
+    int      used;
80
+    uint64_t age;
81
+};
82
+
83
+/**
84
+ * DXVA2 HWAccel context.
85
+ */
86
+class StDxva2Context : public StHWAccelContext {
87
+
88
+        public:
89
+
90
+    /**
91
+     * Empty constructor.
92
+     */
93
+    StDxva2Context()
94
+    : myDeviceHandle(INVALID_HANDLE_VALUE),
95
+      myD3d9(NULL),
96
+      myD3d9Device(NULL),
97
+      myD3d9DevMgr(NULL),
98
+      myDecoderService(NULL),
99
+      myDxvaDecoder(NULL),
100
+      myDecoderGuid(GUID_NULL),
101
+      myD3dSurfaces(NULL),
102
+      mySurfInfos(NULL),
103
+      myNbSurfaces(0),
104
+      mySurfaceAge(0),
105
+      myFrameTmp(NULL) {
106
+        myD3dLib  .loadSimple("d3d9.dll");
107
+        myDxva2Lib.loadSimple("dxva2.dll");
108
+    }
109
+
110
+    /**
111
+     * Destructor.
112
+     */
113
+    virtual ~StDxva2Context() {
114
+        release();
115
+    }
116
+
117
+    /**
118
+     * Release context.
119
+     */
120
+    void release();
121
+
122
+    /**
123
+     * Return true if DXVA2 has been successfully initialized.
124
+     */
125
+    virtual bool isValid() const { return myDeviceHandle != INVALID_HANDLE_VALUE; }
126
+
127
+    /**
128
+     * Create context.
129
+     */
130
+    virtual bool create(StVideoQueue& theVideo);
131
+
132
+    /**
133
+     * Destroy decoder.
134
+     */
135
+    virtual void decoderDestroy() {
136
+        myPoolsTmp[0].release();
137
+        myPoolsTmp[1].release();
138
+        myPoolsTmp[2].release();
139
+
140
+        if(myD3dSurfaces != NULL) {
141
+            for(uint32_t aSurfIter = 0; aSurfIter < myNbSurfaces; ++aSurfIter) {
142
+                if(myD3dSurfaces[aSurfIter] != NULL) {
143
+                    myD3dSurfaces[aSurfIter]->Release();
144
+                }
145
+            }
146
+        }
147
+        av_freep(&myD3dSurfaces);
148
+        av_freep(&mySurfInfos);
149
+        myNbSurfaces = 0;
150
+        mySurfaceAge = 0;
151
+
152
+        if(myDxvaDecoder != NULL) {
153
+            myDxvaDecoder->Release();
154
+            myDxvaDecoder = NULL;
155
+        }
156
+    }
157
+
158
+    /**
159
+     * Create decoder.
160
+     */
161
+    virtual bool decoderCreate(StVideoQueue&   theVideo,
162
+                               AVCodecContext* theCodecCtx);
163
+
164
+    /**
165
+     * AVFrame initialization callback.
166
+     */
167
+    virtual int getFrameBuffer(StVideoQueue& theVideo,
168
+                               AVFrame*      theFrame);
169
+
170
+    /**
171
+     * Fetch decoded results into specified frame.
172
+     */
173
+    virtual bool retrieveFrame(StVideoQueue& theVideo,
174
+                               AVFrame*      theFrame);
175
+
176
+        private:
177
+
178
+    struct StDxva2SurfaceWrapper {
179
+        StDxva2Context*       ctx;
180
+        LPDIRECT3DSURFACE9    surface;
181
+        IDirectXVideoDecoder* decoder;
182
+    };
183
+
184
+    /**
185
+     * Buffer release callback.
186
+     */
187
+    static void stReleaseBufferDxva2(void*    theOpaque,
188
+                                     uint8_t* theData) {
189
+        (void )theData;
190
+        StDxva2SurfaceWrapper* aWrapper = (StDxva2SurfaceWrapper* )theOpaque;
191
+        StDxva2Context*        aDxvaCtx = aWrapper->ctx;
192
+        for(uint32_t aSurfIter = 0; aSurfIter < aDxvaCtx->myNbSurfaces; ++aSurfIter) {
193
+            if(aDxvaCtx->myD3dSurfaces[aSurfIter] == aWrapper->surface) {
194
+                aDxvaCtx->mySurfInfos[aSurfIter].used = 0;
195
+                break;
196
+            }
197
+        }
198
+        aWrapper->surface->Release();
199
+        aWrapper->decoder->Release();
200
+        av_free(aWrapper);
201
+    }
202
+
203
+        private:
204
+
205
+    StLibrary myD3dLib;
206
+    StLibrary myDxva2Lib;
207
+
208
+    HANDLE    myDeviceHandle;
209
+
210
+    IDirect3D9*                  myD3d9;
211
+    IDirect3DDevice9*            myD3d9Device;
212
+    IDirect3DDeviceManager9*     myD3d9DevMgr;
213
+    IDirectXVideoDecoderService* myDecoderService;
214
+    IDirectXVideoDecoder*        myDxvaDecoder;
215
+
216
+    GUID                         myDecoderGuid;
217
+    DXVA2_ConfigPictureDecode    myDecoderConfig;
218
+
219
+    IDirect3DSurface9**          myD3dSurfaces;
220
+    StDxva2SurfaceInfo*          mySurfInfos;
221
+    uint32_t                     myNbSurfaces;
222
+    uint64_t                     mySurfaceAge;
223
+
224
+    StAVBufferPool               myPoolsTmp[3];
225
+    AVFrame*                     myFrameTmp;
226
+    dxva_context                 myDxvaCtxAV;
227
+
228
+    std::vector<StDxva2Mode>     myDxvaModes;
229
+
230
+};
231
+
232
+void StDxva2Context::release() {
233
+    decoderDestroy();
234
+    if(myDecoderService != NULL) {
235
+        myDecoderService->Release();
236
+        myDecoderService = NULL;
237
+    }
238
+    if(myD3d9DevMgr   != NULL
239
+    && myDeviceHandle != INVALID_HANDLE_VALUE) {
240
+        myD3d9DevMgr->CloseDeviceHandle(myDeviceHandle);
241
+        myDeviceHandle = INVALID_HANDLE_VALUE;
242
+    }
243
+    if(myD3d9DevMgr != NULL) {
244
+        myD3d9DevMgr->Release();
245
+        myD3d9DevMgr = NULL;
246
+    }
247
+    if(myD3d9Device != NULL) {
248
+        myD3d9Device->Release();
249
+        myD3d9Device = NULL;
250
+    }
251
+    if(myD3d9 != NULL) {
252
+        myD3d9->Release();
253
+        myD3d9 = NULL;
254
+    }
255
+    av_frame_free(&myFrameTmp);
256
+}
257
+
258
+bool StDxva2Context::create(StVideoQueue& theVideo) {
259
+    const StSignal<void (const StCString& )>& onError = theVideo.signals.onError;
260
+    if(!myD3dLib.isOpened()) {
261
+        onError(stCString("StVideoQueue: Failed to load D3D9 library"));
262
+        release();
263
+        return false;
264
+    } else if(!myDxva2Lib.isOpened()) {
265
+        onError(stCString("StVideoQueue: Failed to load DXVA2 library"));
266
+        release();
267
+        return false;
268
+    }
269
+
270
+    typedef IDirect3D9* (WINAPI *Direct3DCreate9_t)(UINT);
271
+    typedef HRESULT (WINAPI *DXVA2CreateDirect3DDeviceManager9_t)(UINT* , IDirect3DDeviceManager9** );
272
+    Direct3DCreate9_t aCreateD3dProc = NULL;
273
+    DXVA2CreateDirect3DDeviceManager9_t aCreateDevMgrProc = NULL;
274
+    if(!myD3dLib.find("Direct3DCreate9", aCreateD3dProc)) {
275
+        onError(stCString("StVideoQueue: Failed to locate Direct3DCreate9"));
276
+        release();
277
+        return false;
278
+    }
279
+    if(!myDxva2Lib.find("DXVA2CreateDirect3DDeviceManager9", aCreateDevMgrProc)) {
280
+        onError(stCString("StVideoQueue: Failed to locate DXVA2CreateDirect3DDeviceManager9"));
281
+        release();
282
+        return false;
283
+    }
284
+
285
+    myD3d9 = aCreateD3dProc(D3D_SDK_VERSION);
286
+    if(myD3d9 == NULL) {
287
+        onError(stCString("StVideoQueue: Failed to create IDirect3D object"));
288
+        release();
289
+        return false;
290
+    }
291
+
292
+    D3DDISPLAYMODE aD3dDispMode;
293
+    UINT anAdapter = D3DADAPTER_DEFAULT;
294
+    myD3d9->GetAdapterDisplayMode(anAdapter, &aD3dDispMode);
295
+    D3DPRESENT_PARAMETERS aD3dParams = {0};
296
+    aD3dParams.Windowed         = TRUE;
297
+    aD3dParams.BackBufferWidth  = 2;
298
+    aD3dParams.BackBufferHeight = 2;
299
+    aD3dParams.BackBufferCount  = 0;
300
+    aD3dParams.BackBufferFormat = aD3dDispMode.Format;
301
+    aD3dParams.SwapEffect       = D3DSWAPEFFECT_DISCARD;
302
+    aD3dParams.Flags            = D3DPRESENTFLAG_VIDEO;
303
+
304
+    HRESULT aHRes = myD3d9->CreateDevice(anAdapter, D3DDEVTYPE_HAL, GetDesktopWindow(),
305
+                                         D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED | D3DCREATE_FPU_PRESERVE,
306
+                                         &aD3dParams, &myD3d9Device);
307
+    if(aHRes != D3D_OK) {
308
+        onError(stCString("StVideoQueue: Failed to create Direct3D device"));
309
+        release();
310
+        return false;
311
+    }
312
+
313
+    unsigned aResetToken = 0;
314
+    aHRes = aCreateDevMgrProc(&aResetToken, &myD3d9DevMgr);
315
+    if(aHRes != S_OK) {
316
+        onError(stCString("StVideoQueue: Failed to create Direct3D device manager"));
317
+        release();
318
+        return false;
319
+    }
320
+
321
+    aHRes = myD3d9DevMgr->ResetDevice(myD3d9Device, aResetToken);
322
+    if(aHRes != S_OK) {
323
+        onError(stCString("StVideoQueue: Failed to bind Direct3D device to device manager"));
324
+        release();
325
+        return false;
326
+    }
327
+
328
+    aHRes = myD3d9DevMgr->OpenDeviceHandle(&myDeviceHandle);
329
+    if(aHRes != S_OK) {
330
+        onError(stCString("StVideoQueue: Failed to open device handle"));
331
+        release();
332
+        return false;
333
+    }
334
+
335
+    aHRes = myD3d9DevMgr->GetVideoService(myDeviceHandle, IID_IDirectXVideoDecoderService, (void** )&myDecoderService);
336
+    if(aHRes != S_OK) {
337
+        onError(stCString("StVideoQueue: Failed to create IDirectXVideoDecoderService"));
338
+        release();
339
+        return false;
340
+    }
341
+
342
+    myFrameTmp = av_frame_alloc();
343
+    if(myFrameTmp == NULL) {
344
+        release();
345
+        return false;
346
+    }
347
+
348
+    // MPEG-2
349
+    myDxvaModes.clear();
350
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeMPEG2_VLD,      theVideo.CodecIdMPEG2));
351
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeMPEG2and1_VLD,  theVideo.CodecIdMPEG2));
352
+    // H.264
353
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeH264_F,         theVideo.CodecIdH264));
354
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeH264_E,         theVideo.CodecIdH264));
355
+    // Intel specific H.264 mode
356
+    myDxvaModes.push_back(StDxva2Mode(DXVADDI_Intel_ModeH264_E, theVideo.CodecIdH264));
357
+    // VC-1 / WMV3
358
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeVC1_D2010,      theVideo.CodecIdVC1));
359
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeVC1_D2010,      theVideo.CodecIdWMV3));
360
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeVC1_D,          theVideo.CodecIdVC1));
361
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeVC1_D,          theVideo.CodecIdWMV3));
362
+    // HEVC/H.265
363
+    myDxvaModes.push_back(StDxva2Mode(DXVA2_ModeHEVC_VLD_Main,  theVideo.CodecIdHEVC));
364
+    return true;
365
+}
366
+
367
+int StDxva2Context::getFrameBuffer(StVideoQueue& theVideo,
368
+                                   AVFrame*      theFrame) {
369
+    if( theFrame->format != stAV::PIX_FMT::DXVA2_VLD
370
+    || !isValid()) {
371
+        return -1;
372
+    }
373
+
374
+    uint32_t anOldUnused = uint32_t(-1);
375
+    for(uint32_t aSurfIter = 0; aSurfIter < myNbSurfaces; ++aSurfIter) {
376
+        StDxva2SurfaceInfo* info = &mySurfInfos[aSurfIter];
377
+        if(!info->used
378
+        && (anOldUnused == uint32_t(-1) || info->age < mySurfInfos[anOldUnused].age)) {
379
+            anOldUnused = aSurfIter;
380
+        }
381
+    }
382
+    if(anOldUnused == -1) {
383
+        theVideo.signals.onError(stCString("StVideoQueue: No free DXVA2 surface!"));
384
+        return AVERROR(ENOMEM);
385
+    }
386
+    const uint32_t     aSurfId  = anOldUnused;
387
+    IDirect3DSurface9* aSurface = myD3dSurfaces[aSurfId];
388
+
389
+    StDxva2SurfaceWrapper* aWrapper = (StDxva2SurfaceWrapper* )av_mallocz(sizeof(StDxva2SurfaceWrapper));
390
+    if(aWrapper == NULL) {
391
+        return AVERROR(ENOMEM);
392
+    }
393
+
394
+    theFrame->buf[0] = av_buffer_create((uint8_t* )aSurface, 0,
395
+                                        stReleaseBufferDxva2, aWrapper,
396
+                                        AV_BUFFER_FLAG_READONLY);
397
+    if(!theFrame->buf[0]) {
398
+        av_free(aWrapper);
399
+        return AVERROR(ENOMEM);
400
+    }
401
+
402
+    aWrapper->ctx     = this;
403
+    aWrapper->surface = aSurface;
404
+    aWrapper->surface->AddRef();
405
+    aWrapper->decoder = myDxvaDecoder;
406
+    aWrapper->decoder->AddRef();
407
+
408
+    mySurfInfos[aSurfId].used = 1;
409
+    mySurfInfos[aSurfId].age  = mySurfaceAge++;
410
+
411
+    theFrame->data[3] = (uint8_t* )aSurface;
412
+    return 0;
413
+}
414
+
415
+bool StDxva2Context::retrieveFrame(StVideoQueue& theVideo,
416
+                                   AVFrame*      theFrame) {
417
+    if(!isValid()
418
+     || theFrame->format != stAV::PIX_FMT::DXVA2_VLD) {
419
+        return false;
420
+    }
421
+
422
+    IDirect3DSurface9* aSurface = (IDirect3DSurface9* )theFrame->data[3];
423
+    D3DSURFACE_DESC    aSurfDesc;
424
+    aSurface->GetDesc(&aSurfDesc);
425
+
426
+    av_frame_unref(myFrameTmp);
427
+    myFrameTmp->width  = theFrame->width;
428
+    myFrameTmp->height = theFrame->height;
429
+    //myFrameTmp->format = stAV::PIX_FMT::NV12;
430
+    myFrameTmp->format = stAV::PIX_FMT::YUV420P;
431
+    const int aHeightUV   = theFrame->height / 2;
432
+    const int aWidthUV    = theFrame->width  / 2;
433
+
434
+    myFrameTmp->linesize[0] = (int )getAligned(theFrame->width, 32);
435
+    myFrameTmp->linesize[1] = (int )getAligned(aWidthUV,        32);
436
+    myFrameTmp->linesize[2] = (int )getAligned(aWidthUV,        32);
437
+
438
+    const int aBufSizeY   = myFrameTmp->linesize[0] * theFrame->height;
439
+    const int aBufSizeU   = myFrameTmp->linesize[1] * aHeightUV;
440
+    if(myPoolsTmp[0].init(aBufSizeY)
441
+    && myPoolsTmp[1].init(aBufSizeU)
442
+    && myPoolsTmp[2].init(aBufSizeU)) {
443
+        myFrameTmp->buf[0] = myPoolsTmp[0].getBuffer();
444
+        myFrameTmp->buf[1] = myPoolsTmp[1].getBuffer();
445
+        myFrameTmp->buf[2] = myPoolsTmp[2].getBuffer();
446
+        if(myFrameTmp->buf[0] == NULL
447
+        || myFrameTmp->buf[1] == NULL
448
+        || myFrameTmp->buf[2] == NULL) {
449
+            ST_ERROR_LOG("StDxva2Context: unable to allocate YUV420P frame buffers");
450
+            return false;
451
+        }
452
+
453
+        myFrameTmp->data[0] = myFrameTmp->buf[0]->data;
454
+        myFrameTmp->data[1] = myFrameTmp->buf[1]->data;
455
+        myFrameTmp->data[2] = myFrameTmp->buf[2]->data;
456
+    } else if(av_frame_get_buffer(myFrameTmp, 32) < 0) {
457
+        ST_ERROR_LOG("StDxva2Context: unable to allocate YUV420P frame buffers");
458
+        return false;
459
+    }
460
+
461
+    D3DLOCKED_RECT aLockRect;
462
+    if(aSurface->LockRect(&aLockRect, NULL, D3DLOCK_READONLY) != D3D_OK) {
463
+        theVideo.signals.onError(stCString("StVideoQueue: Unable to lock DXVA2 surface"));
464
+        return false;
465
+    }
466
+
467
+    av_image_copy_plane(myFrameTmp->data[0], myFrameTmp->linesize[0],
468
+                        (uint8_t* )aLockRect.pBits,
469
+                        aLockRect.Pitch, theFrame->width, theFrame->height);
470
+    //av_image_copy_plane(myFrameTmp->data[1], myFrameTmp->linesize[1],
471
+    //                    (uint8_t* )aLockRect.pBits + aLockRect.Pitch * aSurfDesc.Height,
472
+    //                    aLockRect.Pitch, theFrame->width, theFrame->height / 2);
473
+    const uint8_t* aSrcPlaneUV = (const uint8_t* )aLockRect.pBits + aLockRect.Pitch * aSurfDesc.Height;
474
+    for(int aRow = 0; aRow < aHeightUV; ++aRow) {
475
+        const uint8_t* aSrcRowUV = aSrcPlaneUV + aRow * aLockRect.Pitch;
476
+        uint8_t*       aDstRowU  = myFrameTmp->data[1] + myFrameTmp->linesize[1] * aRow;
477
+        uint8_t*       aDstRowV  = myFrameTmp->data[2] + myFrameTmp->linesize[2] * aRow;
478
+        for(int aCol = 0; aCol < aWidthUV; ++aCol) {
479
+            const uint8_t* aSrcUV = aSrcRowUV + aCol * 2;
480
+            aDstRowU[aCol] = aSrcUV[0];
481
+            aDstRowV[aCol] = aSrcUV[1];
482
+        }
483
+    }
484
+
485
+    aSurface->UnlockRect();
486
+
487
+    int aRes = av_frame_copy_props(myFrameTmp, theFrame);
488
+    if(aRes < 0) {
489
+        av_frame_unref(myFrameTmp);
490
+        return false;
491
+    }
492
+
493
+    av_frame_unref   (theFrame);
494
+    av_frame_move_ref(theFrame, myFrameTmp);
495
+    return true;
496
+}
497
+
498
+bool StDxva2Context::decoderCreate(StVideoQueue&   theVideo,
499
+                                   AVCodecContext* theCodecCtx) {
500
+    const StSignal<void (const StCString& )>& onError = theVideo.signals.onError;
501
+    decoderDestroy();
502
+    theCodecCtx->hwaccel_context = NULL;
503
+
504
+    uint32_t aNbGuids  = 0;
505
+    GUID*    aGuidList = NULL;
506
+    if(myDecoderService->GetDecoderDeviceGuids(&aNbGuids, &aGuidList) != S_OK) {
507
+        onError(stCString("StVideoQueue: Failed to retrieve decoder DXVA2 device GUIDs"));
508
+        decoderDestroy();
509
+        return false;
510
+    }
511
+
512
+    GUID      aDeviceGuid      = GUID_NULL;
513
+    D3DFORMAT aTargetD3dFormat = D3DFMT_UNKNOWN;
514
+    for(std::vector<StDxva2Mode>::const_iterator aModeIter = myDxvaModes.begin();
515
+        aModeIter != myDxvaModes.end(); ++aModeIter) {
516
+        const StDxva2Mode& aMode = *aModeIter;
517
+        if(aMode.codec != theCodecCtx->codec_id) {
518
+            continue;
519
+        }
520
+
521
+        uint32_t aGuidIter = 0;
522
+        for(; aGuidIter < aNbGuids; ++aGuidIter) {
523
+            if(::IsEqualGUID(*aMode.guid, aGuidList[aGuidIter])) {
524
+                break;
525
+            }
526
+        }
527
+        if(aGuidIter == aNbGuids) {
528
+            continue;
529
+        }
530
+
531
+        uint32_t   aNbD3dTargets  = 0;
532
+        D3DFORMAT* aD3dTargetList = NULL;
533
+        if(myDecoderService->GetDecoderRenderTargets(*aMode.guid, &aNbD3dTargets, &aD3dTargetList) != S_OK) {
534
+            continue;
535
+        }
536
+
537
+        for(uint32_t aTargetIter = 0; aTargetIter < aNbD3dTargets; ++aTargetIter) {
538
+            const D3DFORMAT aD3dFormat = aD3dTargetList[aTargetIter];
539
+            if(aD3dFormat == MKTAG('N','V','1','2')) {
540
+                aTargetD3dFormat = aD3dFormat;
541
+                break;
542
+            }
543
+        }
544
+        ::CoTaskMemFree(aD3dTargetList);
545
+        if(aTargetD3dFormat != D3DFMT_UNKNOWN) {
546
+            aDeviceGuid = *aMode.guid;
547
+            break;
548
+        }
549
+    }
550
+    ::CoTaskMemFree(aGuidList);
551
+
552
+    if(::IsEqualGUID(aDeviceGuid, GUID_NULL)) {
553
+        onError(stCString("StVideoQueue: No DXVA2 decoder device for codec found"));
554
+        decoderDestroy();
555
+        return false;
556
+    }
557
+
558
+    DXVA2_VideoDesc aDesc = { 0 };
559
+    aDesc.SampleWidth  = theCodecCtx->coded_width;
560
+    aDesc.SampleHeight = theCodecCtx->coded_height;
561
+    aDesc.Format       = aTargetD3dFormat;
562
+
563
+    uint32_t aNbConfigs = 0;
564
+    uint32_t aBestScore = 0;
565
+    DXVA2_ConfigPictureDecode* aCfgList = NULL;
566
+    DXVA2_ConfigPictureDecode  aBestCfg = {{0}};
567
+    if(myDecoderService->GetDecoderConfigurations(aDeviceGuid, &aDesc, NULL, &aNbConfigs, &aCfgList) != S_OK) {
568
+        onError(stCString("StVideoQueue: Unable to retrieve DXVA2 decoder configurations"));
569
+        decoderDestroy();
570
+        return false;
571
+    }
572
+
573
+    for(uint32_t aCfgIter = 0; aCfgIter < aNbConfigs; ++aCfgIter) {
574
+        const DXVA2_ConfigPictureDecode& aCfg = aCfgList[aCfgIter];
575
+        uint32_t aScore = 0;
576
+        if(aCfg.ConfigBitstreamRaw == 1) {
577
+            aScore = 1;
578
+        } else if(theCodecCtx->codec_id == theVideo.CodecIdH264
579
+               && aCfg.ConfigBitstreamRaw == 2) {
580
+            aScore = 2;
581
+        } else {
582
+            continue;
583
+        }
584
+
585
+        if(::IsEqualGUID(aCfg.guidConfigBitstreamEncryption, DXVA2_NoEncrypt)) {
586
+            aScore += 16;
587
+        }
588
+        if(aScore > aBestScore) {
589
+            aBestScore = aScore;
590
+            aBestCfg   = aCfg;
591
+        }
592
+    }
593
+    ::CoTaskMemFree(aCfgList);
594
+    if(aBestScore == 0) {
595
+        onError(stCString("StVideoQueue: No valid DXVA2 decoder configuration available"));
596
+        decoderDestroy();
597
+        return false;
598
+    }
599
+
600
+    // decoding MPEG-2 requires additional alignment on some Intel GPUs,
601
+    // but it causes issues for H.264 on certain AMD GPUs...
602
+    int aSurfaceAlignment = 16;
603
+    if(theCodecCtx->codec_id == theVideo.CodecIdMPEG2) {
604
+        aSurfaceAlignment = 32;
605
+    // the HEVC DXVA2 spec asks for 128 pixel aligned surfaces to ensure
606
+    // all coding features have enough room to work with
607
+    } else if(theCodecCtx->codec_id == theVideo.CodecIdHEVC) {
608
+        aSurfaceAlignment = 128;
609
+    }
610
+
611
+    // 4 base work surfaces
612
+    myNbSurfaces = 4;
613
+
614
+    // add surfaces based on number of possible refs
615
+    if((theCodecCtx->codec_id == theVideo.CodecIdH264)
616
+    || (theCodecCtx->codec_id == theVideo.CodecIdHEVC)) {
617
+        myNbSurfaces += 16;
618
+    } else {
619
+        myNbSurfaces += 2;
620
+    }
621
+
622
+    // add extra surfaces for frame threading
623
+    if(theCodecCtx->active_thread_type & FF_THREAD_FRAME) {
624
+        myNbSurfaces += theCodecCtx->thread_count;
625
+    }
626
+
627
+    myD3dSurfaces = (IDirect3DSurface9** )av_mallocz(myNbSurfaces * sizeof(*myD3dSurfaces));
628
+    mySurfInfos   = (StDxva2SurfaceInfo* )av_mallocz(myNbSurfaces * sizeof(*mySurfInfos));
629
+    if(myD3dSurfaces == NULL
630
+    || mySurfInfos   == NULL) {
631
+        ST_ERROR_LOG(stCString("StVideoQueue: Unable to allocate surface arrays"));
632
+        decoderDestroy();
633
+        return false;
634
+    }
635
+
636
+    HRESULT anHRes = myDecoderService->CreateSurface(FFALIGN(theCodecCtx->coded_width,  aSurfaceAlignment),
637
+                                                     FFALIGN(theCodecCtx->coded_height, aSurfaceAlignment),
638
+                                                     myNbSurfaces - 1,
639
+                                                     aTargetD3dFormat, D3DPOOL_DEFAULT, 0,
640
+                                                     DXVA2_VideoDecoderRenderTarget,
641
+                                                     myD3dSurfaces, NULL);
642
+    if(anHRes != S_OK) {
643
+        onError(StString("StVideoQueue: Failed to create ") + myNbSurfaces + " video surfaces");
644
+        decoderDestroy();
645
+        return false;
646
+    }
647
+
648
+    anHRes = myDecoderService->CreateVideoDecoder(aDeviceGuid,
649
+                                                  &aDesc, &aBestCfg, myD3dSurfaces,
650
+                                                  myNbSurfaces, &myDxvaDecoder);
651
+    if(anHRes != S_OK) {
652
+        onError(stCString("StVideoQueue: Failed to create DXVA2 video decoder"));
653
+        decoderDestroy();
654
+        return false;
655
+    }
656
+
657
+    myDecoderGuid   = aDeviceGuid;
658
+    myDecoderConfig = aBestCfg;
659
+
660
+    theCodecCtx->hwaccel_context = &myDxvaCtxAV;
661
+    stMemZero(&myDxvaCtxAV, sizeof(myDxvaCtxAV));
662
+    myDxvaCtxAV.cfg           = &myDecoderConfig;
663
+    myDxvaCtxAV.decoder       = myDxvaDecoder;
664
+    myDxvaCtxAV.surface       = myD3dSurfaces;
665
+    myDxvaCtxAV.surface_count = myNbSurfaces;
666
+    myDxvaCtxAV.workaround    = 0;
667
+    if(::IsEqualGUID(myDecoderGuid, DXVADDI_Intel_ModeH264_E)) {
668
+        myDxvaCtxAV.workaround |= FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO;
669
+    }
670
+
671
+    return true;
672
+}
673
+
674
+bool StVideoQueue::hwaccelInit() {
675
+    if(!myHWAccelCtx.isNull()
676
+    && !myHWAccelCtx->isValid()) {
677
+        return false;
678
+    } else if(myCodecCtx->codec_id == AV_CODEC_ID_NONE) {
679
+        return false;
680
+    }
681
+
682
+    if(myCodecCtx->codec_id == CodecIdH264
683
+    && (myCodecCtx->profile & ~FF_PROFILE_H264_CONSTRAINED) > FF_PROFILE_H264_HIGH) {
684
+        signals.onError(StString("StVideoQueue: Unsupported H.264 profile for DXVA2 HWAccel: ") + myCodecCtx->profile);
685
+        return false;
686
+    }
687
+
688
+    if(myHWAccelCtx.isNull()) {
689
+        myHWAccelCtx = new StDxva2Context();
690
+        if(!myHWAccelCtx->create(*this)) {
691
+            return false;
692
+        }
693
+    }
694
+
695
+    if(!myHWAccelCtx->decoderCreate(*this, myCodecCtx)) {
696
+        return false;
697
+    }
698
+    fillCodecInfo(myCodecCtx->codec, " (DXVA2)");
699
+    return true;
700
+}
701
+
702
+#endif // _WIN32
703
sview-15_10.tar.gz/StMoviePlayer/StVideo/StVideoQueue.cpp -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StVideoQueue.cpp Changed
458
 
1
@@ -38,36 +38,18 @@
2
     }
3
 #endif
4
 
5
-#ifdef ST_AV_OLDSYNC
6
+#if(LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 0, 0))
7
     /**
8
-     * These are called whenever we allocate a frame
9
-     * buffer. We use this to store the global_pts in
10
-     * a frame at the time it is allocated.
11
+     * Release the frame buffer (old API).
12
      */
13
-    static int ourGetBuffer(AVCodecContext* theCodecCtx,
14
-                            AVFrame*        theFrame) {
15
-        StVideoQueue* aVideoQueue = (StVideoQueue* )theCodecCtx->opaque;
16
-        const int aResult = avcodec_default_get_buffer(theCodecCtx, theFrame);
17
-    #ifdef ST_USE64PTR
18
-        theFrame->opaque = (void* )aVideoQueue->getVideoPktPts();
19
-    #else
20
-        int64_t* aPts = new int64_t();
21
-        *aPts = aVideoQueue->getVideoPktPts();
22
-        theFrame->opaque = aPts;
23
-    #endif
24
-        return aResult;
25
-    }
26
-
27
-    static void ourReleaseBuffer(AVCodecContext* theCodecCtx,
28
-                                 AVFrame*        theFrame) {
29
+    static void stReleaseFrameBuffer(AVCodecContext* theCodecCtx,
30
+                                     AVFrame*        theFrame) {
31
+    #if defined(ST_AV_OLDSYNC) && !ST_USE64PTR
32
         if(theFrame != NULL) {
33
-        #ifdef ST_USE64PTR
34
-            theFrame->opaque = (void* )stAV::NOPTS_VALUE;
35
-        #else
36
             delete (int64_t* )theFrame->opaque;
37
             theFrame->opaque = NULL;
38
-        #endif
39
         }
40
+    #endif
41
         avcodec_default_release_buffer(theCodecCtx, theFrame);
42
     }
43
 #endif
44
@@ -81,23 +63,103 @@
45
         return SV_THREAD_RETURN 0;
46
     }
47
 
48
-};
49
+}
50
+
51
+AVPixelFormat StVideoQueue::getFrameFormat(const AVPixelFormat* theFormats) {
52
+    if(!myUseGpu || myIsGpuFailed) {
53
+        return avcodec_default_get_format(myCodecCtx, theFormats);
54
+    }
55
+
56
+    for(const AVPixelFormat* aFormatIter = theFormats; *aFormatIter != -1; ++aFormatIter) {
57
+        /*const AVPixFmtDescriptor* aDesc = av_pix_fmt_desc_get(*aFormatIter);
58
+        if(!(aDesc->flags & AV_PIX_FMT_FLAG_HWACCEL)) {
59
+            return *aFormatIter;
60
+        }*/
61
+
62
+    #if defined(_WIN32)
63
+        if(*aFormatIter == stAV::PIX_FMT::DXVA2_VLD) {
64
+            if(!hwaccelInit()) {
65
+                myIsGpuFailed = true;
66
+                return avcodec_default_get_format(myCodecCtx, theFormats);
67
+            }
68
+            return *aFormatIter;
69
+        }
70
+    #endif
71
+    }
72
+
73
+    return *theFormats;
74
+}
75
+
76
+int StVideoQueue::getFrameBuffer(AVFrame* theFrame,
77
+                                 int      theFlags) {
78
+    int aResult = 0;
79
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 0, 0))
80
+    bool isDone = false;
81
+    #if defined(_WIN32)
82
+        if(theFrame->format == stAV::PIX_FMT::DXVA2_VLD) {
83
+            if(!myHWAccelCtx.isNull()) {
84
+                aResult = myHWAccelCtx->getFrameBuffer(*this, theFrame);
85
+            } else {
86
+                aResult = -1;
87
+            }
88
+            isDone  = true;
89
+        }
90
+    #endif
91
+        if(!isDone) {
92
+            aResult = avcodec_default_get_buffer2(myCodecCtx, theFrame, theFlags);
93
+        }
94
+
95
+    #ifdef ST_AV_OLDSYNC
96
+    #ifdef ST_USE64PTR
97
+        theFrame->opaque = (void* )myVideoPktPts;
98
+    #else
99
+        AVFrameSideData* aSideDataSync = av_frame_new_side_data(theFrame, (AVFrameSideDataType )1000, sizeof(myVideoPktPts));
100
+        if(aSideDataSync != NULL) {
101
+            memcpy(aSideDataSync->data, &myVideoPktPts, sizeof(myVideoPktPts));
102
+        }
103
+    #endif
104
+    #endif
105
+#else
106
+    aResult = avcodec_default_get_buffer(myCodecCtx, theFrame);
107
+    #ifdef ST_AV_OLDSYNC
108
+    #ifdef ST_USE64PTR
109
+        theFrame->opaque = (void* )myVideoPktPts;
110
+    #else
111
+        int64_t* aPts = new int64_t();
112
+        *aPts = myVideoPktPts;
113
+        theFrame->opaque = aPts;
114
+    #endif
115
+    #endif
116
+#endif
117
+    return aResult;
118
+}
119
+
120
+#if !defined(_WIN32)
121
+bool StVideoQueue::hwaccelInit() { return false; }
122
+#endif
123
+
124
+inline AVCodecID stFindCodecId(const char* theName) {
125
+    AVCodec* aCodec = avcodec_find_decoder_by_name(theName);
126
+    return aCodec != NULL ? aCodec->id : AV_CODEC_ID_NONE;
127
+}
128
 
129
 StVideoQueue::StVideoQueue(const StHandle<StGLTextureQueue>& theTextureQueue,
130
                            const StHandle<StVideoQueue>&     theMaster)
131
 : StAVPacketQueue(512),
132
+  CodecIdH264 (stFindCodecId("h264")),
133
+  CodecIdHEVC (stFindCodecId("hevc")),
134
+  CodecIdMPEG2(stFindCodecId("mpeg2video")),
135
+  CodecIdWMV3 (stFindCodecId("wmv3")),
136
+  CodecIdVC1  (stFindCodecId("vc1")),
137
   myDowntimeState(true),
138
   myTextureQueue(theTextureQueue),
139
   myHasDataState(false),
140
   myMaster(theMaster),
141
-#if defined(_WIN32)
142
-  myCodecDxva264(avcodec_find_decoder_by_name("h264_dxva2")),
143
-  myCodecDxvaWmv(avcodec_find_decoder_by_name("wmv3_dxva2")),
144
-  myCodecDxvaVc1(avcodec_find_decoder_by_name("vc1_dxva2")),
145
-#elif defined(__APPLE__)
146
+#if defined(__APPLE__)
147
   myCodecVda(avcodec_find_decoder_by_name("h264_vda")),
148
 #endif
149
   myUseGpu(false),
150
+  myIsGpuFailed(false),
151
   //
152
   myToRgbCtx(NULL),
153
   myToRgbPixFmt(stAV::PIX_FMT::NONE),
154
@@ -118,12 +180,16 @@
155
   myStFormatByUser(StFormat_AUTO),
156
   myStFormatByName(StFormat_AUTO),
157
   myStFormatInStream(StFormat_AUTO) {
158
-
159
 #ifdef ST_USE64PTR
160
     myFrame.Frame->opaque = (void* )stAV::NOPTS_VALUE;
161
 #else
162
     myFrame.Frame->opaque = NULL;
163
 #endif
164
+
165
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
166
+    myFrameBufRef = new StAVFrameCounter();
167
+#endif
168
+
169
     myThread = new StThread(threadFunction, (void* )this, theMaster.isNull() ? "StVideoQueueM" : "StVideoQueueS");
170
 }
171
 
172
@@ -137,6 +203,7 @@
173
     myThread.nullify();
174
 
175
     deinit();
176
+    myHWAccelCtx.nullify();
177
 }
178
 
179
 namespace {
180
@@ -173,31 +240,33 @@
181
         {StFormat_AUTO, NULL}
182
     };
183
 
184
-};
185
+}
186
+
187
+bool StVideoQueue::initCodec(AVCodec*   theCodec,
188
+                             const bool theToUseGpu) {
189
+    // close previous codec
190
+    if(myCodec != NULL) {
191
+        avcodec_close(myCodecCtx);
192
+        fillCodecInfo(NULL);
193
+    }
194
+    myCodec = NULL;
195
 
196
-bool StVideoQueue::initCodec(AVCodec* theCodec) {
197
     // configure the codec
198
     myCodecCtx->codec_id = theCodec->id;
199
-    //myCodecCtx->debug_mv = debug_mv;
200
-    //myCodecCtx->debug = debug;
201
-    //myCodecCtx->workaround_bugs = workaround_bugs;
202
-    //myCodecCtx->lowres = 1;
203
-    //if(lowres) myCodecCtx->flags |= CODEC_FLAG_EMU_EDGE;
204
-    //myCodecCtx->idct_algo= idct;
205
-    //if(fast) myCodecCtx->flags2 |= CODEC_FLAG2_FAST;
206
-    //myCodecCtx->skip_idct= skip_idct;
207
-    //myCodecCtx->skip_loop_filter= skip_loop_filter;
208
-    //myCodecCtx->error_recognition= error_recognition;
209
-    //myCodecCtx->error_concealment= error_concealment;
210
-    int threadsCount = StThread::countLogicalProcessors();
211
-    myCodecCtx->thread_count = threadsCount;
212
+    stAV::meta::Dict* anOpts = NULL;
213
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
214
+    av_dict_set(&anOpts, "refcounted_frames", "1", 0);
215
+#endif
216
+
217
+    int aNbThreads = theToUseGpu ? 1 : StThread::countLogicalProcessors();
218
+    myCodecCtx->thread_count = aNbThreads;
219
 #if(LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52, 112, 0))
220
-    avcodec_thread_init(myCodecCtx, threadsCount);
221
+    avcodec_thread_init(myCodecCtx, aNbThreads);
222
 #endif
223
 
224
     // open codec
225
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53, 8, 0))
226
-    if(avcodec_open2(myCodecCtx, theCodec, NULL) < 0) {
227
+    if(avcodec_open2(myCodecCtx, theCodec, &anOpts) < 0) {
228
 #else
229
     if(avcodec_open(myCodecCtx, theCodec) < 0) {
230
 #endif
231
@@ -206,7 +275,7 @@
232
 
233
     myCodec = theCodec;
234
     fillCodecInfo(theCodec);
235
-    ST_DEBUG_LOG("FFmpeg: Setup AVcodec to use " + threadsCount + " threads");
236
+    ST_DEBUG_LOG("FFmpeg: Setup AVcodec to use " + aNbThreads + " threads");
237
     return true;
238
 }
239
 
240
@@ -231,6 +300,15 @@
241
 #endif
242
 
243
     // find the decoder for the video stream
244
+    myCodecCtx->opaque         = this;
245
+    myCodecCtx->get_format     = stGetFrameFormat;
246
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 0, 0))
247
+    myCodecCtx->get_buffer2    = stGetFrameBuffer2;
248
+#else
249
+    myCodecCtx->get_buffer     = stGetFrameBuffer1;
250
+    myCodecCtx->release_buffer = stReleaseFrameBuffer;
251
+#endif
252
+
253
     myCodecAuto = avcodec_find_decoder(myCodecCtx->codec_id);
254
     if(myCodecAuto == NULL) {
255
         signals.onError(stCString("FFmpeg: Video codec not found"));
256
@@ -238,43 +316,44 @@
257
         return false;
258
     }
259
 
260
+#if defined(_WIN32)
261
+    myIsGpuFailed = myCodecCtx->codec_id != CodecIdMPEG2
262
+                 && myCodecCtx->codec_id != CodecIdH264
263
+                 && myCodecCtx->codec_id != CodecIdVC1
264
+                 && myCodecCtx->codec_id != CodecIdWMV3
265
+                 && myCodecCtx->codec_id != CodecIdVC1
266
+                 && myCodecCtx->codec_id != CodecIdHEVC;
267
+#endif
268
+
269
+    // open VIDEO codec
270
+#if defined(__APPLE__)
271
     bool isCodecOverridden = false;
272
     AVCodec* aCodecGpu = NULL;
273
-    if(myUseGpu) {
274
-    #if defined(_WIN32)
275
-        if(StString(myCodecAuto->name).isEquals(stCString("h264"))) {
276
-            aCodecGpu = myCodecDxva264;
277
-        } else if(StString(myCodecAuto->name).isEquals(stCString("wmv3"))) {
278
-            aCodecGpu = myCodecDxvaWmv;
279
-        } else if(StString(myCodecAuto->name).isEquals(stCString("vc1"))) {
280
-            aCodecGpu = myCodecDxvaVc1;
281
-        }
282
-    #elif defined(__APPLE__)
283
-        if(StString(myCodecAuto->name).isEquals(stCString("h264"))
284
-        && myCodecCtx->pix_fmt == stAV::PIX_FMT::YUV420P) {
285
-            aCodecGpu = myCodecVda;
286
-        }
287
-    #endif
288
+    if(myUseGpu
289
+    && StString(myCodecAuto->name).isEquals(stCString("h264"))
290
+    && myCodecCtx->pix_fmt == stAV::PIX_FMT::YUV420P) {
291
+        aCodecGpu = myCodecVda;
292
     }
293
 
294
     if(aCodecGpu != NULL) {
295
-    #if defined(__APPLE__)
296
         myCodecCtx->get_format = stGetFormatYUV420P;
297
-    #endif
298
-        isCodecOverridden = initCodec(aCodecGpu);
299
-    #if defined(__APPLE__)
300
+        isCodecOverridden = initCodec(aCodecGpu, true);
301
         if(!isCodecOverridden) {
302
             myCodecCtx->get_format = myGetFrmtInit;
303
         }
304
-    #endif
305
     }
306
-
307
-    // open VIDEO codec
308
-    if(!isCodecOverridden && !initCodec(myCodecAuto)) {
309
+    if(!isCodecOverridden && !initCodec(myCodecAuto, false)) {
310
         signals.onError(stCString("FFmpeg: Could not open video codec"));
311
         deinit();
312
         return false;
313
     }
314
+#else
315
+    if(!initCodec(myCodecAuto, myUseGpu && !myIsGpuFailed)) {
316
+        signals.onError(stCString("FFmpeg: Could not open video codec"));
317
+        deinit();
318
+        return false;
319
+    }
320
+#endif
321
 
322
     // determine required myFrameRGB size and allocate it
323
     if(sizeX() == 0 || sizeY() == 0) {
324
@@ -348,17 +427,11 @@
325
             myPixelRatio *= 0.5;
326
         }
327
     }
328
-
329
-#ifdef ST_AV_OLDSYNC
330
-    // override buffers' functions for getting true PTS rootines
331
-    myCodecCtx->opaque = this;
332
-    myCodecCtx->get_buffer = ourGetBuffer;
333
-    myCodecCtx->release_buffer = ourReleaseBuffer;
334
-#endif
335
     return true;
336
 }
337
 
338
 void StVideoQueue::deinit() {
339
+    myIsGpuFailed = false;
340
     if(myMaster.isNull()) {
341
         myTextureQueue->clear();
342
         myTextureQueue->setConnectedStream(false);
343
@@ -381,6 +454,12 @@
344
         myCodecCtx->codec_id = myCodecAuto->id;
345
     }
346
     StAVPacketQueue::deinit();
347
+    if(myCodecCtx != NULL) {
348
+        myCodecCtx->hwaccel_context = NULL;
349
+    }
350
+    if(!myHWAccelCtx.isNull()) {
351
+        myHWAccelCtx->decoderDestroy();
352
+    }
353
 }
354
 
355
 #ifdef ST_AV_OLDSYNC
356
@@ -408,6 +487,7 @@
357
     PixelFormat  aPixFmt     = stAV::PIX_FMT::NONE;
358
     stAV::dimYUV aDimsYUV;
359
     myFrame.getImageInfo(myCodecCtx, aFrameSizeX, aFrameSizeY, aPixFmt);
360
+    myDataAdp.setBufferCounter(NULL);
361
     if(aPixFmt == stAV::PIX_FMT::RGB24) {
362
         myDataAdp.setColorModel(StImage::ImgColor_RGB);
363
         myDataAdp.setColorScale(StImage::ImgScale_Full);
364
@@ -461,6 +541,9 @@
365
                                              size_t(aDimsYUV.widthU), size_t(aDimsYUV.heightU), myFrame.getLineSize(1));
366
         myDataAdp.changePlane(2).initWrapper(aPlaneFrmt, myFrame.getPlane(2),
367
                                              size_t(aDimsYUV.widthV), size_t(aDimsYUV.heightV), myFrame.getLineSize(2));
368
+
369
+        myFrameBufRef->moveReferenceFrom(myFrame.Frame);
370
+        myDataAdp.setBufferCounter(myFrameBufRef);
371
     } else if(!myToRgbIsBroken) {
372
         if(myToRgbCtx    == NULL
373
         || myToRgbPixFmt != aPixFmt
374
@@ -636,7 +719,19 @@
375
 
376
         // decode video frame
377
     #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0))
378
+        bool toTryGpu  = myUseGpu && !myIsGpuFailed;
379
         avcodec_decode_video2(myCodecCtx, myFrame.Frame, &isFrameFinished, aPacket->getAVpkt());
380
+        bool isGpuUsed = myUseGpu && !myIsGpuFailed;
381
+        if(isGpuUsed != toTryGpu) {
382
+            if(!initCodec(myCodecAuto, isGpuUsed)) {
383
+                signals.onError(stCString("FFmpeg: Could not re-open video codec"));
384
+                deinit();
385
+                aPacket.nullify();
386
+                continue;
387
+            }
388
+            isFrameFinished = 0;
389
+            avcodec_decode_video2(myCodecCtx, myFrame.Frame, &isFrameFinished, aPacket->getAVpkt());
390
+        }
391
     #else
392
         avcodec_decode_video(myCodecCtx, myFrame.Frame, &isFrameFinished,
393
                              aPacket->getData(), aPacket->getSize());
394
@@ -663,20 +758,22 @@
395
         // Save global pts to be stored in pFrame in first call
396
         myVideoPktPts = aPacket->getPts();
397
 
398
-    #ifdef ST_USE64PTR
399
-        if(aPacket->getDts() == stAV::NOPTS_VALUE
400
-        && (int64_t )myFrame.Frame->opaque != stAV::NOPTS_VALUE) {
401
-            myFramePts = double((int64_t )myFrame.Frame->opaque);
402
-    #else
403
-        if(aPacket->getDts() == stAV::NOPTS_VALUE
404
-        && myFrame.Frame->opaque != NULL
405
-        && *(int64_t* )myFrame.Frame->opaque != stAV::NOPTS_VALUE) {
406
-            myFramePts = double(*(int64_t* )myFrame.Frame->opaque);
407
-    #endif
408
-        } else if(aPacket->getDts() != stAV::NOPTS_VALUE) {
409
+        myFramePts = 0.0;
410
+        if(aPacket->getDts() != stAV::NOPTS_VALUE) {
411
             myFramePts = double(aPacket->getDts());
412
         } else {
413
-            myFramePts = 0.0;
414
+            int64_t aPktPtsSync = stAV::NOPTS_VALUE;
415
+        #ifdef ST_USE64PTR
416
+            aPktPtsSync = (int64_t )myFrame.Frame->opaque;
417
+        #else
418
+            AVFrameSideData* aSideDataSync = av_frame_get_side_data(myFrame.Frame, (AVFrameSideDataType )1000);
419
+            if(aSideDataSync != NULL) {
420
+                memcpy(&aPktPtsSync, &aSideDataSync->data, sizeof(myVideoPktPts));
421
+            }
422
+        #endif
423
+            if(aPktPtsSync != stAV::NOPTS_VALUE) {
424
+                myFramePts = double(aPktPtsSync);
425
+            }
426
         }
427
         myFramePts *= av_q2d(myStream->time_base);
428
         myFramePts -= myPtsStartBase; // normalize PTS
429
@@ -722,6 +819,11 @@
430
             }
431
         }
432
 
433
+        // copy frame back from GPU to CPU memory
434
+        if(!myHWAccelCtx.isNull()) {
435
+            myHWAccelCtx->retrieveFrame(*this, myFrame.Frame);
436
+        }
437
+
438
         // we currently allow to override source format stored in metadata
439
     #ifdef ST_AV_NEWSTEREO
440
         AVFrameSideData* aSideData = av_frame_get_side_data(myFrame.Frame, AV_FRAME_DATA_STEREO3D);
441
@@ -820,7 +922,7 @@
442
             // simple one-stream case
443
             if(aSrcFormat == StFormat_FrameSequence) {
444
                 if(isOddNumber(myFramesCounter)) {
445
-                    myCachedFrame.fill(myDataAdp);
446
+                    myCachedFrame.fill(myDataAdp, false);
447
                 } else {
448
                     pushFrame(myCachedFrame, myDataAdp, aPacket->getSource(), StFormat_FrameSequence, aCubemapFormat, myFramePts);
449
                 }
450
@@ -830,6 +932,7 @@
451
             }
452
         }
453
 
454
+        myFrame.reset();
455
         aPacket.nullify(); // and now packet finished
456
     }
457
 }
458
sview-15_10.tar.gz/StMoviePlayer/StVideo/StVideoQueue.h -> sview-15_11.tar.gz/StMoviePlayer/StVideo/StVideoQueue.h Changed
196
 
1
@@ -22,12 +22,59 @@
2
 #include <StGLStereo/StGLTextureQueue.h>
3
 
4
 #include "StAVPacketQueue.h"
5
-#include <StAV/StAVFrame.h>
6
+#include <StAV/StAVImage.h>
7
 
8
 // forward declarations
9
 class StVideoQueue;
10
 class StThread;
11
 
12
+/**
13
+ * Interface defining HWAccel context.
14
+ */
15
+class StHWAccelContext {
16
+
17
+        public:
18
+
19
+    /**
20
+     * Initialize the context.
21
+     */
22
+    virtual bool create(StVideoQueue& theVideo) = 0;
23
+
24
+    /**
25
+     * Destructor.
26
+     */
27
+    virtual ~StHWAccelContext() {}
28
+
29
+    /**
30
+     * Return true if context has been successfully initialized.
31
+     */
32
+    virtual bool isValid() const = 0;
33
+
34
+    /**
35
+     * Create decoder.
36
+     */
37
+    virtual bool decoderCreate(StVideoQueue&   theVideo,
38
+                               AVCodecContext* theCodecCtx) = 0;
39
+
40
+    /**
41
+     * Release decoder.
42
+     */
43
+    virtual void decoderDestroy() = 0;
44
+
45
+    /**
46
+     * AVFrame initialization callback.
47
+     */
48
+    virtual int getFrameBuffer(StVideoQueue& theVideo,
49
+                               AVFrame*      theFrame) = 0;
50
+
51
+    /**
52
+     * Fetch decoded results into specified frame.
53
+     */
54
+    virtual bool retrieveFrame(StVideoQueue& theVideo,
55
+                               AVFrame*      theFrame) = 0;
56
+
57
+};
58
+
59
 // define StHandle template specialization
60
 ST_DEFINE_HANDLE(StVideoQueue, StAVPacketQueue);
61
 
62
@@ -44,6 +91,14 @@
63
 
64
         public:
65
 
66
+    AVCodecID CodecIdH264;
67
+    AVCodecID CodecIdHEVC;
68
+    AVCodecID CodecIdMPEG2;
69
+    AVCodecID CodecIdWMV3;
70
+    AVCodecID CodecIdVC1;
71
+
72
+        public:
73
+
74
     /**
75
      * @return true if GPU usage is enabled
76
      */
77
@@ -52,10 +107,19 @@
78
     }
79
 
80
     /**
81
+     * Return true if GPU usage has been requested but failed (e.g. decoder should be reinitialized).
82
+     */
83
+    ST_LOCAL bool isGpuFailed() const {
84
+        return myIsGpuFailed;
85
+    }
86
+
87
+    /**
88
      * Setup GPU usage. Requires re-initialization to take effect!
89
      */
90
-    ST_LOCAL void setUseGpu(const bool theToUseGpu) {
91
-        myUseGpu = theToUseGpu;
92
+    ST_LOCAL void setUseGpu(const bool theToUseGpu,
93
+                            const bool theIsGpuFailed = false) {
94
+        myUseGpu      = theToUseGpu;
95
+        myIsGpuFailed = theIsGpuFailed;
96
     }
97
 
98
     ST_LOCAL bool isInDowntime() {
99
@@ -79,10 +143,6 @@
100
         myHasDataState.reset();
101
     }
102
 
103
-    ST_LOCAL int64_t getVideoPktPts() const {
104
-        return myVideoPktPts;
105
-    }
106
-
107
     ST_LOCAL void setAClock(const double thePts) {
108
         myAudioClockMutex.lock();
109
         myAudioClock = thePts;
110
@@ -212,9 +272,58 @@
111
         private:
112
 
113
     /**
114
+     * Select frame format from the list.
115
+     */
116
+    ST_LOCAL static AVPixelFormat stGetFrameFormat(AVCodecContext*      theCodecCtx,
117
+                                                   const AVPixelFormat* theFormats) {
118
+        StVideoQueue* aVideoQueue = (StVideoQueue* )theCodecCtx->opaque;
119
+        return aVideoQueue->getFrameFormat(theFormats);
120
+    }
121
+
122
+    /**
123
+     * Frame buffer allocation callback (deprecated form).
124
+     */
125
+    ST_LOCAL static int stGetFrameBuffer1(AVCodecContext* theCodecCtx,
126
+                                          AVFrame*        theFrame) {
127
+        StVideoQueue* aVideoQueue = (StVideoQueue* )theCodecCtx->opaque;
128
+        return aVideoQueue->getFrameBuffer(theFrame, 0);
129
+    }
130
+
131
+    /**
132
+     * Frame buffer allocation callback (wrapper).
133
+     */
134
+    ST_LOCAL static int stGetFrameBuffer2(AVCodecContext* theCodecCtx,
135
+                                          AVFrame*        theFrame,
136
+                                          int             theFlags) {
137
+        StVideoQueue* aVideoQueue = (StVideoQueue* )theCodecCtx->opaque;
138
+        return aVideoQueue->getFrameBuffer(theFrame, theFlags);
139
+    }
140
+
141
+        private:
142
+
143
+    /**
144
      * Initialize codec context.
145
      */
146
-    ST_LOCAL bool initCodec(AVCodec* theCodec);
147
+    ST_LOCAL bool initCodec(AVCodec*   theCodec,
148
+                            const bool theToUseGpu);
149
+
150
+    /**
151
+     * Select frame format from the list.
152
+     */
153
+    ST_LOCAL AVPixelFormat getFrameFormat(const AVPixelFormat* theFormats);
154
+
155
+    /**
156
+     * Frame buffer allocation callback.
157
+     */
158
+    ST_LOCAL int getFrameBuffer(AVFrame* theFrame,
159
+                                int      theFlags);
160
+
161
+    /**
162
+     * Initialize hardware accelerated decoder.
163
+     */
164
+    ST_LOCAL bool hwaccelInit();
165
+
166
+private:
167
 
168
     /**
169
      * Initialize adapter over AVframe or perform to RGB conversion.
170
@@ -238,14 +347,12 @@
171
     StHandle<StVideoQueue>     myMaster;          //!< handle to Master decoding thread
172
     StHandle<StVideoQueue>     mySlave;           //!< handle to Slave  decoding thread
173
 
174
-#if defined(_WIN32)
175
-    AVCodec*                   myCodecDxva264;    //!< DXVA2 codec (decoding on GPU in Windows)
176
-    AVCodec*                   myCodecDxvaWmv;    //!< DXVA2 codec (decoding on GPU in Windows)
177
-    AVCodec*                   myCodecDxvaVc1;    //!< DXVA2 codec (decoding on GPU in Windows)
178
-#elif defined(__APPLE__)
179
+    StHandle<StHWAccelContext> myHWAccelCtx;
180
+#if defined(__APPLE__)
181
     AVCodec*                   myCodecVda;        //!< VDA codec (decoding on GPU in OS X)
182
 #endif
183
     bool                       myUseGpu;          //!< activate decoding on GPU when possible
184
+    bool                       myIsGpuFailed;     //!< flag indicating that GPU decoder can not handle input data
185
 
186
     StAVFrame                  myFrameRGB;        //!< frame, converted to RGB (soft)
187
     StImagePlane               myDataRGB;         //!< RGB buffer data (for swscale)
188
@@ -254,6 +361,7 @@
189
     bool                       myToRgbIsBroken;   //!< indicates broke swscale context - to RGB conversion is impossible
190
 
191
     StAVFrame                  myFrame;           //!< original decoded video frame
192
+    StHandle<StAVFrameCounter> myFrameBufRef;
193
     StImage                    myDataAdp;         //!< buffer data adaptor
194
     AVDiscard                  myAvDiscard;       //!< discard parameter (to skip or not frames)
195
 
196
sview-15_10.tar.gz/StMoviePlayer/lang/chinese/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/chinese/StMoviePlayer.lng Changed
491
 
1
@@ -1,246 +1,246 @@
2
 # Chinese translation file for StMoviePlayer program
3
 # @author YSC
4
 --------
5
-1002="切换 左/右"
6
-1003="还原切换 左/右"
7
-1004="立体格式:"
8
-1015="打开另一视频"
9
-1020="播放/暂停"
10
-1021="显示/隐藏\n播放列表"
11
-1022="播放上一文件"
12
-1023="播放下一文件"
13
-1029="切换\n全屏/窗口模式"
14
-1100="文件"
15
-1101="打开视频->>"
16
-1102="保存快照->>"
17
-1103="立体格式->>"
18
-1170="文件信息"
19
-1104="音频设备->>"
20
-1105="随机播放"
21
-1106="近期播放记录->>"
22
-1107="通过GPU视频解码"
23
-1108="界面设计->>"
24
-1109="退出"
25
-1110="单一立体文件"
26
-1111="左右分离视频文件"
27
-1130="自动识别"
28
-1131="单画面"
29
-1132="左|右(右|左)"
30
-1133="平行配对"
31
-1134="上/下(右/左)"
32
-1135="上/下(左/右)"
33
-1136="交错"
34
-1137="立体红/青"
35
-1138="立体绿/红+蓝"
36
-1139="立体黄/蓝"
37
-1140="帧连续"
38
-1141="2x720p 平铺于 1080p"
39
-1142="2 视频流"
40
-1160="清除播放历史"
41
-1180="关闭"
42
-1181="应用一次"
43
-1182="每次应用"
44
-1185="显示错误"
45
-?1186="界面设计can not be started on {0} port!"
46
-1200="视频"
47
-1201="立体输出->>"
48
-1202="全屏"
49
-1203="重置"
50
-1204="切换左/右"
51
-1205="显示比例->>"
52
-1206="平滑过滤->>"
53
-1207="图像校正->>"
54
-1208="表面处理->>"
55
-1210="立体"
56
-1211="左画面"
57
-1212="右画面"
58
-1213="平行配对"
59
-1214="对眼"
60
-1250="源格式"
61
-1251="重启维持"
62
-?1252="Heal anamorphic 1080p/720p"
63
-1260="接近"
64
-1261="线性"
65
-1262="混纺交织"
66
-1270="重置默认"
67
-1271="亮度"
68
-1272="饱和度"
69
-1273="伽马"
70
-1280="平面"
71
-1281="球面"
72
-1282="圆筒"
73
-?1283="Cubemap"
74
-?1285="Track orientation"
75
-?1286="Track orientation (poor)"
76
-1300="音频"
77
-1301="无"
78
-1302="音/视频 延迟"
79
-1303="从文件加载"
80
-1320="音/视频 同步"
81
-1321="音频提前于视频输入正值,否则负值。"
82
-1322="音频延迟:"
83
-1323="秒(s)"
84
-1350="字幕"
85
-1351="无"
86
-1353="从文件加载"
87
-1354="字体大小"
88
-1355="视差"
89
-1356="文本解析"
90
-?1357="Placement"
91
-?1358="Top"
92
-?1359="Bottom"
93
-?1360="Plain text"
94
-?1361="Lite HTML"
95
-1400="改变设备->>"
96
-1401="关于插件…"
97
-1402="FPS控制->>"
98
-1420="同时"
99
-1421="显示表"
100
-1422="减少CPU的使用"
101
-1500="帮助"
102
-1501="关于..."
103
-1502="检查更新->>"
104
-1503="许可证文本"
105
-1504="语言 (Language)"
106
-1505="阻止休眠->>"
107
-1506="用户提示"
108
-1507="实验特性"
109
-1508="关于系统"
110
-1509="界面尺寸->>"
111
-?1510="Hotkeys"
112
-?1511="Settings"
113
-1520="现在"
114
-1521="每天"
115
-1522="每周"
116
-1523="每年"
117
-1524="绝不"
118
-1550="绝不"
119
-1551="总是"
120
-1552="回放期间"
121
-1553="全屏时"
122
-1590="小"
123
-1591="正常"
124
-1592="大"
125
-1593="强制高解析 2X"
126
-2000="选择视频文件打开"
127
-2001="选择左视频文件打开"
128
-2002="选择右视频文件打开"
129
-2003="文件信息"
130
-2004="文件信息未获得"
131
-2005="文件删除"
132
-2006="确定完全移除吗?"
133
-2007="激活解码器:"
134
-2010="选择保存快照位置"
135
-2011="什么也没有保存!"
136
-2012="快照不为空!"
137
-?2013="Assign new Hot Key for action\n<i>{0}</i>"
138
-?2014="Conflicts with: <i>{0}</i>"
139
-3000="sView - Movie Player"
140
-3001="版本"
141
-?3002="Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
142
-?3003="A new version of sView is available on the official site www.sview.ru.\nPlease update your program."
143
-3004="系统信息"
144
-4000="关闭"
145
-4001="取消"
146
-4005="重置"
147
-4006="保存"
148
-4007="删除"
149
-?4008="Default"
150
-?4009="Defaults"
151
-?4010="Assign"
152
-5000="[左]"
153
-5001="[右]"
154
-5002="文件名字(s)"
155
-5003="视频大小"
156
-5004="装载时间"
157
-5005="ms"
158
-5006="像素比率"
159
-5007="像素格式"
160
-5008="(不存储在元数据)"
161
-5009="(不匹配的元数据)"
162
-5010="持续时间"
163
-5011="(不存储在元数据中,\n但检测到文件名称)"
164
-5300="标题"
165
-5301="作曲家"
166
-5302="艺术家"
167
-5303="专辑"
168
-5304="相册"
169
-5305="盘"
170
-5306="NB 盘"
171
-5307="流派"
172
-5308="评论"
173
-5309="注释"
174
-5310="描述"
175
-5311="出版商"
176
-5312="版权"
177
-5313="编码器"
178
-5314="工程师"
179
-5315="源"
180
-5316="创建时间"
181
-5317="数据"
182
-5318="年"
183
-5319="语言"
184
-5320="跟踪"
185
-5321="NB 轨道"
186
-5322="音轨增益"
187
-5323="轨道峰"
188
-5324="专辑增益"
189
-5325="专辑峰"
190
-6000="退出"
191
-6001="切换\n全屏/窗口模式"
192
-6002="显示 FPS"
193
-6003="立体格式: 自动侦测"
194
-6004="立体格式: 单画面"
195
-6005="立体格式: 上/下"
196
-6006="立体格式: 对眼"
197
-?6007="Show file info"
198
-?6008="Playlist - Go to the first item"
199
-?6009="Playlist - Go to the last item"
200
-6010="播放上一文件"
201
-6011="播放下一文件"
202
-6012="播放上一文件 [2]"
203
-6013="播放下一文件 [2]"
204
-6014="播放/暂停"
205
-?6015="Stop playback"
206
-?6016="Seek 5 seconds backward"
207
-?6017="Seek 5 seconds forward"
208
-6018="打开视频"
209
-6019="保存快照"
210
-?6020="Delete the file from file system"
211
-?6021="Mute/unmute audio"
212
-?6022="Audio volume down"
213
-?6023="Audio volume up"
214
-?6024="Previous audio track"
215
-?6025="Next audio track"
216
-?6026="Next subtitles track"
217
-?6027="Next subtitles track"
218
-?6028="Copy displayed subtitles text"
219
-?6029="Open URL from clipboard"
220
-6030="显示/隐藏播放列表"
221
-?6031="Reset image adjustment"
222
-?6032="Reset image position"
223
-6033="切换 左/右"
224
-?6034="Gamma correction - decrease"
225
-?6035="Gamma correction - increase"
226
-?6036="DX separation - decrease"
227
-?6037="DX separation - increase"
228
-?6038="DY separation - decrease"
229
-?6039="DY separation - increase"
230
-?6040="Angular separation - decrease"
231
-?6041="Angular separation - increase"
232
-?6042="Rotate 90 degrees counterclockwise"
233
-?6043="Rotate 90 degrees clockwise"
234
-?6044="Rotate counterclockwise"
235
-?6045="Rotate clockwise"
236
-?6046="Enable/disable panorama mode"
237
-?6047="Panning - navigate to the left"
238
-?6048="Panning - navigate to the right"
239
-?6049="Panning - navigate to the top"
240
-?6050="Panning - navigate to the bottom"
241
-/6051="Scale - increment"
242
-?6052="Scale - decrement"
243
-?6053="Y Rotation - left"
244
-?6054="Y Rotation - right"
245
-?6055="X Rotation - up"
246
-?6056="X Rotation - down"
247
-?6057="Enable/disable panorama mode"
248
+1002=切换 左/右
249
+1003=还原切换 左/右
250
+1004=立体格式:
251
+1015=打开另一视频
252
+1020=播放/暂停
253
+1021=显示/隐藏\n播放列表
254
+1022=播放上一文件
255
+1023=播放下一文件
256
+1029=切换\n全屏/窗口模式
257
+1100=文件
258
+1101=打开视频
259
+1102=保存快照
260
+1103=立体格式
261
+1170=文件信息
262
+1104=音频设备
263
+1105=随机播放
264
+1106=近期播放记录
265
+1107=通过GPU视频解码
266
+1108=界面设计
267
+1109=退出
268
+1110=单一立体文件
269
+1111=左右分离视频文件
270
+1130=自动识别
271
+1131=单画面
272
+1132=左|右(右|左)
273
+1133=平行配对
274
+1134=上/下(右/左)
275
+1135=上/下(左/右)
276
+1136=交错
277
+1137=立体红/青
278
+1138=立体绿/红+蓝
279
+1139=立体黄/蓝
280
+1140=帧连续
281
+1141=2x720p 平铺于 1080p
282
+1142=2 视频流
283
+1160=清除播放历史
284
+1180=关闭
285
+1181=应用一次
286
+1182=每次应用
287
+1185=显示错误
288
+?1186=界面设计can not be started on {0} port!
289
+1200=视频
290
+1201=立体输出
291
+1202=全屏
292
+1203=重置
293
+1204=切换左/右
294
+1205=显示比例
295
+1206=平滑过滤
296
+1207=图像校正
297
+1208=表面处理
298
+1210=立体
299
+1211=左画面
300
+1212=右画面
301
+1213=平行配对
302
+1214=对眼
303
+1250=源格式
304
+1251=重启维持
305
+?1252=Heal anamorphic 1080p/720p
306
+1260=接近
307
+1261=线性
308
+1262=混纺交织
309
+1270=重置默认
310
+1271=亮度
311
+1272=饱和度
312
+1273=伽马
313
+1280=平面
314
+1281=球面
315
+1282=圆筒
316
+?1283=Cubemap
317
+?1285=Track orientation
318
+?1286=Track orientation (poor)
319
+1300=音频
320
+1301=无
321
+1302=音/视频 延迟
322
+1303=从文件加载
323
+1320=音/视频 同步
324
+1321=音频提前于视频输入正值,否则负值。
325
+1322=音频延迟:
326
+1323=秒(s)
327
+1350=字幕
328
+1351=无
329
+1353=从文件加载
330
+1354=字体大小
331
+1355=视差
332
+1356=文本解析
333
+?1357=Placement
334
+?1358=Top
335
+?1359=Bottom
336
+?1360=Plain text
337
+?1361=Lite HTML
338
+1400=改变设备
339
+1401=关于插件…
340
+1402=FPS控制
341
+1420=同时
342
+1421=显示表
343
+1422=减少CPU的使用
344
+1500=帮助
345
+1501=关于...
346
+1502=检查更新
347
+1503=许可证文本
348
+1504=语言 (Language)
349
+1505=阻止休眠
350
+1506=用户提示
351
+1507=实验特性
352
+1508=关于系统
353
+1509=界面尺寸
354
+?1510=Hotkeys
355
+?1511=Settings
356
+1520=现在
357
+1521=每天
358
+1522=每周
359
+1523=每年
360
+1524=绝不
361
+1550=绝不
362
+1551=总是
363
+1552=回放期间
364
+1553=全屏时
365
+1590=小
366
+1591=正常
367
+1592=大
368
+1593=强制高解析 2X
369
+2000=选择视频文件打开
370
+2001=选择左视频文件打开
371
+2002=选择右视频文件打开
372
+2003=文件信息
373
+2004=文件信息未获得
374
+2005=文件删除
375
+2006=确定完全移除吗?
376
+2007=激活解码器:
377
+2010=选择保存快照位置
378
+2011=什么也没有保存!
379
+2012=快照不为空!
380
+?2013=Assign new Hot Key for action\n<i>{0}</i>
381
+?2014=Conflicts with: <i>{0}</i>
382
+3000=sView - Movie Player
383
+3001=版本
384
+?3002=Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
385
+?3003=A new version of sView is available on the official site www.sview.ru.\nPlease update your program.
386
+3004=系统信息
387
+4000=关闭
388
+4001=取消
389
+4005=重置
390
+4006=保存
391
+4007=删除
392
+?4008=Default
393
+?4009=Defaults
394
+?4010=Assign
395
+5000=[左]
396
+5001=[右]
397
+5002=文件名字(s)
398
+5003=视频大小
399
+5004=装载时间
400
+5005=ms
401
+5006=像素比率
402
+5007=像素格式
403
+5008=(不存储在元数据)
404
+5009=(不匹配的元数据)
405
+5010=持续时间
406
+5011=(不存储在元数据中,\n但检测到文件名称)
407
+5300=标题
408
+5301=作曲家
409
+5302=艺术家
410
+5303=专辑
411
+5304=相册
412
+5305=盘
413
+5306=NB 盘
414
+5307=流派
415
+5308=评论
416
+5309=注释
417
+5310=描述
418
+5311=出版商
419
+5312=版权
420
+5313=编码器
421
+5314=工程师
422
+5315=源
423
+5316=创建时间
424
+5317=数据
425
+5318=年
426
+5319=语言
427
+5320=跟踪
428
+5321=NB 轨道
429
+5322=音轨增益
430
+5323=轨道峰
431
+5324=专辑增益
432
+5325=专辑峰
433
+6000=退出
434
+6001=切换\n全屏/窗口模式
435
+6002=显示 FPS
436
+6003=立体格式: 自动侦测
437
+6004=立体格式: 单画面
438
+6005=立体格式: 上/下
439
+6006=立体格式: 对眼
440
+?6007=Show file info
441
+?6008=Playlist - Go to the first item
442
+?6009=Playlist - Go to the last item
443
+6010=播放上一文件
444
+6011=播放下一文件
445
+6012=播放上一文件 [2]
446
+6013=播放下一文件 [2]
447
+6014=播放/暂停
448
+?6015=Stop playback
449
+?6016=Seek 5 seconds backward
450
+?6017=Seek 5 seconds forward
451
+6018=打开视频
452
+6019=保存快照
453
+?6020=Delete the file from file system
454
+?6021=Mute/unmute audio
455
+?6022=Audio volume down
456
+?6023=Audio volume up
457
+?6024=Previous audio track
458
+?6025=Next audio track
459
+?6026=Previous subtitles track
460
+?6027=Next subtitles track
461
+?6028=Copy displayed subtitles text
462
+?6029=Open URL from clipboard
463
+6030=显示/隐藏播放列表
464
+?6031=Reset image adjustment
465
+?6032=Reset image position
466
+6033=切换 左/右
467
+?6034=Gamma correction - decrease
468
+?6035=Gamma correction - increase
469
+?6036=DX separation - decrease
470
+?6037=DX separation - increase
471
+?6038=DY separation - decrease
472
+?6039=DY separation - increase
473
+?6040=Angular separation - decrease
474
+?6041=Angular separation - increase
475
+?6042=Rotate 90 degrees counterclockwise
476
+?6043=Rotate 90 degrees clockwise
477
+?6044=Rotate counterclockwise
478
+?6045=Rotate clockwise
479
+?6046=Enable/disable panorama mode
480
+?6047=Panning - navigate to the left
481
+?6048=Panning - navigate to the right
482
+?6049=Panning - navigate to the top
483
+?6050=Panning - navigate to the bottom
484
+/6051=Scale - increment
485
+?6052=Scale - decrement
486
+?6053=Y Rotation - left
487
+?6054=Y Rotation - right
488
+?6055=X Rotation - up
489
+?6056=X Rotation - down
490
+?6057=Enable/disable panorama mode
491
sview-15_10.tar.gz/StMoviePlayer/lang/czech/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/czech/StMoviePlayer.lng Changed
10
 
1
@@ -213,7 +213,7 @@
2
 ?6023=Audio volume up
3
 ?6024=Previous audio track
4
 ?6025=Next audio track
5
-?6026=Next subtitles track
6
+?6026=Previous subtitles track
7
 ?6027=Next subtitles track
8
 ?6028=Copy displayed subtitles text
9
 ?6029=Open URL from clipboard
10
sview-15_10.tar.gz/StMoviePlayer/lang/english/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/english/StMoviePlayer.lng Changed
491
 
1
@@ -1,246 +1,246 @@
2
 # English translation file for StMoviePlayer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1002="Swap Left/Right"
6
-1003="UnSwap Left/Right"
7
-1004="Stereoscopic format:"
8
-1015="Open another movie"
9
-1020="Play/Pause"
10
-1021="Show/Hide playlist"
11
-1022="Play Previous File"
12
-1023="Play Next File"
13
-1029="Switch\nfullscreen/windowed"
14
-1100="Media"
15
-1101="Open Movie..."
16
-1102="Save Snapshot..."
17
-1103="Stereoscopic format"
18
-1170="File info"
19
-1104="Audio Device"
20
-1105="Shuffle"
21
-1106="Recent files"
22
-1107="Video decoding on GPU"
23
-1108="Web UI"
24
-1109="Quit"
25
-1110="From One file"
26
-1111="Left+Right files"
27
-1130="Source"
28
-1131="Mono"
29
-1132="Cross-eyed"
30
-1133="Parallel Pair"
31
-1134="Over/Under (R/L)"
32
-1135="Over/Under (L/R)"
33
-1136="Interlaced"
34
-1137="Anaglyph Red/Cyan"
35
-1138="Anaglyph Green/Red+Blue"
36
-1139="Anaglyph Yellow/Blue"
37
-1140="Frame-sequential"
38
-1141="2x720p in 1080p tiled"
39
-1142="2 Streams"
40
-1160="Clear history"
41
-1180="Turn Off"
42
-1181="Launch once"
43
-1182="Launch every time"
44
-1185="Show errors"
45
-1186="Web UI can not be started on {0} port!"
46
-1200="View"
47
-1201="Stereo Output"
48
-1202="Fullscreen"
49
-1203="Reset"
50
-1204="Swap Left/Right"
51
-1205="Display Ratio"
52
-1206="Smooth Filter"
53
-1207="Image Adjust"
54
-1208="Panorama"
55
-1210="Stereo"
56
-1211="Left View"
57
-1212="Right View"
58
-1213="Parallel Pair"
59
-1214="Cross-eyed"
60
-1250="Source"
61
-1251="Keep on restart"
62
-1252="Heal anamorphic 1080p/720p"
63
-1260="Nearest"
64
-1261="Linear"
65
-1262="Blend Deinterlace"
66
-1270="Reset to defaults"
67
-1271="Brightness"
68
-1272="Saturation"
69
-1273="Gamma"
70
-1280="Plane"
71
-1281="Sphere"
72
-1282="Cylinder"
73
-1283="Cubemap"
74
-1285="Track orientation"
75
-1286="Track orientation (poor)"
76
-1300="Audio"
77
-1301="None"
78
-1302="Audio/Video delay"
79
-1303="Attach from file"
80
-1320="Audio/Video synchronization"
81
-1321="Enter positive value if audio appears earlier than video and negative otherwise."
82
-1322="Audio delay:"
83
-1323="second(s)"
84
-1350="Subtitles"
85
-1351="None"
86
-1353="Attach from file"
87
-1354="Font Size"
88
-1355="Parallax"
89
-1356="Text parser"
90
-1357="Placement"
91
-1358="Top"
92
-1359="Bottom"
93
-1360="Plain text"
94
-1361="Lite HTML"
95
-1400="Change device"
96
-1401="About Plugin..."
97
-1402="FPS Control"
98
-1420="VSync"
99
-1421="Show Meter"
100
-1422="Reduce CPU usage"
101
-1500="Help"
102
-1501="About..."
103
-1502="Check for updates"
104
-1503="License text"
105
-1504="Language"
106
-1505="Block sleeping"
107
-1506="User tips"
108
-1507="Experimental features"
109
-1508="About system"
110
-1509="Interface Scale"
111
-1510="Hotkeys"
112
-1511="Settings"
113
-1520="Now"
114
-1521="Each day"
115
-1522="Each week"
116
-1523="Each year"
117
-1524="Never"
118
-1550="Never"
119
-1551="Always"
120
-1552="During Playback"
121
-1553="When in Full-screen"
122
-1590="Small"
123
-1591="Normal"
124
-1592="Big"
125
-1593="Force HiDPI 2X"
126
-2000="Choose the video file to open"
127
-2001="Choose LEFT video file to open"
128
-2002="Choose RIGHT video file to open"
129
-2003="File Info"
130
-2004="File information is unavailable"
131
-2005="File deletion"
132
-2006="Do you really want to completely remove this file?"
133
-2007="Active decoders:"
134
-2010="Choose location to save snapshot"
135
-2011="Nothing to save!"
136
-2012="Snapshot not available!"
137
-2013="Assign new Hot Key for action\n<i>{0}</i>"
138
-2014="Conflicts with: <i>{0}</i>"
139
-3000="sView - Movie Player"
140
-3001="version"
141
-3002="Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
142
-3003="A new version of sView is available on the official site www.sview.ru.\nPlease update your program."
143
-3004="System Info"
144
-4000="Close"
145
-4001="Cancel"
146
-4005="Reset"
147
-4006="Save"
148
-4007="Delete"
149
-4008="Default"
150
-4009="Defaults"
151
-4010="Assign"
152
-5000="[left]"
153
-5001="[right]"
154
-5002="File name(s)"
155
-5003="Video dimensions"
156
-5004="Load time"
157
-5005="ms"
158
-5006="Pixel ratio"
159
-5007="Pixel format"
160
-5008="(does not stored in metadata)"
161
-5009="(does not match metadata)"
162
-5010="Duration"
163
-5011="(does not stored in metadata,\nbut detected from file name)"
164
-5300="Title"
165
-5301="Composer"
166
-5302="Artist"
167
-5303="Album artist"
168
-5304="Album"
169
-5305="Disc"
170
-5306="Nb. of discs"
171
-5307="Genre"
172
-5308="Comment"
173
-5309="Notes"
174
-5310="Description"
175
-5311="Publisher"
176
-5312="Copyright"
177
-5313="Encoder"
178
-5314="Engineer"
179
-5315="Source"
180
-5316="Creation time"
181
-5317="Date"
182
-5318="Year"
183
-5319="Language"
184
-5320="Track"
185
-5321="Nb. of tracks"
186
-5322="Track gain"
187
-5323="Track peak"
188
-5324="Album gain"
189
-5325="Album peak"
190
-6000="Quit program"
191
-6001="Switch fullscreen/windowed"
192
-6002="Show/hide FPS meter"
193
-6003="Stereo format - Auto"
194
-6004="Stereo format - Mono"
195
-6005="Stereo format - Over/Under"
196
-6006="Stereo format - Side by side"
197
-6007="Show file info"
198
-6008="Playlist - Go to the first item"
199
-6009="Playlist - Go to the last item"
200
-6010="Playlist - Go to the previous item"
201
-6011="Playlist - Go to the next item"
202
-6012="Playlist - Go to the previous item [2]"
203
-6013="Playlist - Go to the next item [2]"
204
-6014="Play/pause playback"
205
-6015="Stop playback"
206
-6016="Seek 5 seconds backward"
207
-6017="Seek 5 seconds forward"
208
-6018="Show open file dialog"
209
-6019="Save snapshot"
210
-6020="Delete the file from file system"
211
-6021="Mute/unmute audio"
212
-6022="Audio volume down"
213
-6023="Audio volume up"
214
-6024="Previous audio track"
215
-6025="Next audio track"
216
-6026="Next subtitles track"
217
-6027="Next subtitles track"
218
-6028="Copy displayed subtitles text"
219
-6029="Open URL from clipboard"
220
-6030="Show/hide playlist"
221
-6031="Reset image adjustment"
222
-6032="Reset image position"
223
-6033="Swap Left/Right"
224
-6034="Gamma correction - decrease"
225
-6035="Gamma correction - increase"
226
-6036="DX separation - decrease"
227
-6037="DX separation - increase"
228
-6038="DY separation - decrease"
229
-6039="DY separation - increase"
230
-6040="Angular separation - decrease"
231
-6041="Angular separation - increase"
232
-6042="Rotate 90 degrees counterclockwise"
233
-6043="Rotate 90 degrees clockwise"
234
-6044="Rotate counterclockwise"
235
-6045="Rotate clockwise"
236
-6046="Enable/disable panorama mode"
237
-6047="Panning - navigate to the left"
238
-6048="Panning - navigate to the right"
239
-6049="Panning - navigate to the top"
240
-6050="Panning - navigate to the bottom"
241
-6051="Scale - increment"
242
-6052="Scale - decrement"
243
-6053="Y Rotation - left"
244
-6054="Y Rotation - right"
245
-6055="X Rotation - up"
246
-6056="X Rotation - down"
247
-6057="Enable/disable panorama mode"
248
+1002=Swap Left/Right
249
+1003=UnSwap Left/Right
250
+1004=Stereoscopic format:
251
+1015=Open another movie
252
+1020=Play/Pause
253
+1021=Show/Hide playlist
254
+1022=Play Previous File
255
+1023=Play Next File
256
+1029=Switch\nfullscreen/windowed
257
+1100=Media
258
+1101=Open Movie...
259
+1102=Save Snapshot...
260
+1103=Stereoscopic format
261
+1170=File info
262
+1104=Audio Device
263
+1105=Shuffle
264
+1106=Recent files
265
+1107=Video decoding on GPU
266
+1108=Web UI
267
+1109=Quit
268
+1110=From One file
269
+1111=Left+Right files
270
+1130=Source
271
+1131=Mono
272
+1132=Cross-eyed
273
+1133=Parallel Pair
274
+1134=Over/Under (R/L)
275
+1135=Over/Under (L/R)
276
+1136=Interlaced
277
+1137=Anaglyph Red/Cyan
278
+1138=Anaglyph Green/Red+Blue
279
+1139=Anaglyph Yellow/Blue
280
+1140=Frame-sequential
281
+1141=2x720p in 1080p tiled
282
+1142=2 Streams
283
+1160=Clear history
284
+1180=Turn Off
285
+1181=Launch once
286
+1182=Launch every time
287
+1185=Show errors
288
+1186=Web UI can not be started on {0} port!
289
+1200=View
290
+1201=Stereo Output
291
+1202=Fullscreen
292
+1203=Reset
293
+1204=Swap Left/Right
294
+1205=Display Ratio
295
+1206=Smooth Filter
296
+1207=Image Adjust
297
+1208=Panorama
298
+1210=Stereo
299
+1211=Left View
300
+1212=Right View
301
+1213=Parallel Pair
302
+1214=Cross-eyed
303
+1250=Source
304
+1251=Keep on restart
305
+1252=Heal anamorphic 1080p/720p
306
+1260=Nearest
307
+1261=Linear
308
+1262=Blend Deinterlace
309
+1270=Reset to defaults
310
+1271=Brightness
311
+1272=Saturation
312
+1273=Gamma
313
+1280=Plane
314
+1281=Sphere
315
+1282=Cylinder
316
+1283=Cubemap
317
+1285=Track orientation
318
+1286=Track orientation (poor)
319
+1300=Audio
320
+1301=None
321
+1302=Audio/Video delay
322
+1303=Attach from file
323
+1320=Audio/Video synchronization
324
+1321=Enter positive value if audio appears earlier than video and negative otherwise.
325
+1322=Audio delay:
326
+1323=second(s)
327
+1350=Subtitles
328
+1351=None
329
+1353=Attach from file
330
+1354=Font Size
331
+1355=Parallax
332
+1356=Text parser
333
+1357=Placement
334
+1358=Top
335
+1359=Bottom
336
+1360=Plain text
337
+1361=Lite HTML
338
+1400=Change device
339
+1401=About Plugin...
340
+1402=FPS Control
341
+1420=VSync
342
+1421=Show Meter
343
+1422=Reduce CPU usage
344
+1500=Help
345
+1501=About...
346
+1502=Check for updates
347
+1503=License text
348
+1504=Language
349
+1505=Block sleeping
350
+1506=User tips
351
+1507=Experimental features
352
+1508=About system
353
+1509=Interface Scale
354
+1510=Hotkeys
355
+1511=Settings
356
+1520=Now
357
+1521=Each day
358
+1522=Each week
359
+1523=Each year
360
+1524=Never
361
+1550=Never
362
+1551=Always
363
+1552=During Playback
364
+1553=When in Full-screen
365
+1590=Small
366
+1591=Normal
367
+1592=Big
368
+1593=Force HiDPI 2X
369
+2000=Choose the video file to open
370
+2001=Choose LEFT video file to open
371
+2002=Choose RIGHT video file to open
372
+2003=File Info
373
+2004=File information is unavailable
374
+2005=File deletion
375
+2006=Do you really want to completely remove this file?
376
+2007=Active decoders:
377
+2010=Choose location to save snapshot
378
+2011=Nothing to save!
379
+2012=Snapshot not available!
380
+2013=Assign new Hot Key for action\n<i>{0}</i>
381
+2014=Conflicts with: <i>{0}</i>
382
+3000=sView - Movie Player
383
+3001=version
384
+3002=Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
385
+3003=A new version of sView is available on the official site www.sview.ru.\nPlease update your program.
386
+3004=System Info
387
+4000=Close
388
+4001=Cancel
389
+4005=Reset
390
+4006=Save
391
+4007=Delete
392
+4008=Default
393
+4009=Defaults
394
+4010=Assign
395
+5000=[left]
396
+5001=[right]
397
+5002=File name(s)
398
+5003=Video dimensions
399
+5004=Load time
400
+5005=ms
401
+5006=Pixel ratio
402
+5007=Pixel format
403
+5008=(does not stored in metadata)
404
+5009=(does not match metadata)
405
+5010=Duration
406
+5011=(does not stored in metadata,\nbut detected from file name)
407
+5300=Title
408
+5301=Composer
409
+5302=Artist
410
+5303=Album artist
411
+5304=Album
412
+5305=Disc
413
+5306=Nb. of discs
414
+5307=Genre
415
+5308=Comment
416
+5309=Notes
417
+5310=Description
418
+5311=Publisher
419
+5312=Copyright
420
+5313=Encoder
421
+5314=Engineer
422
+5315=Source
423
+5316=Creation time
424
+5317=Date
425
+5318=Year
426
+5319=Language
427
+5320=Track
428
+5321=Nb. of tracks
429
+5322=Track gain
430
+5323=Track peak
431
+5324=Album gain
432
+5325=Album peak
433
+6000=Quit program
434
+6001=Switch fullscreen/windowed
435
+6002=Show/hide FPS meter
436
+6003=Stereo format - Auto
437
+6004=Stereo format - Mono
438
+6005=Stereo format - Over/Under
439
+6006=Stereo format - Side by side
440
+6007=Show file info
441
+6008=Playlist - Go to the first item
442
+6009=Playlist - Go to the last item
443
+6010=Playlist - Go to the previous item
444
+6011=Playlist - Go to the next item
445
+6012=Playlist - Go to the previous item [2]
446
+6013=Playlist - Go to the next item [2]
447
+6014=Play/pause playback
448
+6015=Stop playback
449
+6016=Seek 5 seconds backward
450
+6017=Seek 5 seconds forward
451
+6018=Show open file dialog
452
+6019=Save snapshot
453
+6020=Delete the file from file system
454
+6021=Mute/unmute audio
455
+6022=Audio volume down
456
+6023=Audio volume up
457
+6024=Previous audio track
458
+6025=Next audio track
459
+6026=Previous subtitles track
460
+6027=Next subtitles track
461
+6028=Copy displayed subtitles text
462
+6029=Open URL from clipboard
463
+6030=Show/hide playlist
464
+6031=Reset image adjustment
465
+6032=Reset image position
466
+6033=Swap Left/Right
467
+6034=Gamma correction - decrease
468
+6035=Gamma correction - increase
469
+6036=DX separation - decrease
470
+6037=DX separation - increase
471
+6038=DY separation - decrease
472
+6039=DY separation - increase
473
+6040=Angular separation - decrease
474
+6041=Angular separation - increase
475
+6042=Rotate 90 degrees counterclockwise
476
+6043=Rotate 90 degrees clockwise
477
+6044=Rotate counterclockwise
478
+6045=Rotate clockwise
479
+6046=Enable/disable panorama mode
480
+6047=Panning - navigate to the left
481
+6048=Panning - navigate to the right
482
+6049=Panning - navigate to the top
483
+6050=Panning - navigate to the bottom
484
+6051=Scale - increment
485
+6052=Scale - decrement
486
+6053=Y Rotation - left
487
+6054=Y Rotation - right
488
+6055=X Rotation - up
489
+6056=X Rotation - down
490
+6057=Enable/disable panorama mode
491
sview-15_10.tar.gz/StMoviePlayer/lang/french/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/french/StMoviePlayer.lng Changed
491
 
1
@@ -1,246 +1,246 @@
2
 # French translation file for StMoviePlayer program
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1002="Gauche/Droite inversé"
6
-1003="Gauche/Droite normal"
7
-1004="Format entrée:"
8
-1015="Ouvre autre vidéo"
9
-1020="Lecture/Pause"
10
-1021="Affiche/Masque playlist"
11
-1022="Fichier Précédent"
12
-1023="Fichier Suivant"
13
-1029="Bascule\Plein écran/fenêtre"
14
-1100="Média"
15
-1101="Ouvre Video..."
16
-1102="Enregistre Capture..."
17
-1103="Format Stéréo d'entrée"
18
-1170="File info"
19
-1104="Audio Device"
20
-1105="Aléatorie"
21
-1106="Médias récents"
22
-1107="Video decoding on GPU"
23
-1108="Web UI"
24
-1109="Quitter"
25
-1110="Depuis un fichier"
26
-1111="2 Fichiers Gauche+Droit"
27
-1130="Source"
28
-1131="Mono"
29
-1132="Cross-eyed"
30
-1133="Coté/Coté (SbS)"
31
-1134="Dessus/Dessous(D/G)"
32
-1135="Dessus/Dessous(G/D)"
33
-1136="Entrelacé"
34
-1137="Anaglyphe Rouge/Bleu"
35
-1138="Anaglyphe Vert/Magenta"
36
-1139="Anaglyphe Jaune/Bleu"
37
-1140="Frame-sequential"
38
-1141="2x720p in 1080p tiled"
39
-1142="2 Streams"
40
-1160="Effacer l'historique"
41
-1180="Arrêter"
42
-1181="Lancez une fois"
43
-1182="Lancer à chaque fois"
44
-1185="Afficher les erreurs"
45
-?1186="Web UI can not be started on {0} port!"
46
-1200="Affichage"
47
-1201="Sortie Stéréo"
48
-1202="Plein Ecran"
49
-1203="Réinitialisation"
50
-1204="Inverser Gauche/Droite"
51
-1205="Ratio d'affichage"
52
-1206="Lissage antialiasing"
53
-1207="Réglage de l'image"
54
-1208="Panorama"
55
-1210="Stéréo"
56
-1211="Vue Gauche"
57
-1212="Vue Droite"
58
-1213="Coté/Coté (SbS)"
59
-1214="Cross-eyed"
60
-1250="Source"
61
-1251="Garder après redémarrage"
62
-?1252="Heal anamorphic 1080p/720p"
63
-1260="Plus proche"
64
-1261="Lineaire"
65
-1262="Blend Deinterlace"
66
-1270="Rétablir par défaut"
67
-1271="Brightness"
68
-1272="Saturation"
69
-1273="Gamma"
70
-1280="Plan"
71
-1281="Sphère"
72
-1282="Cylindre"
73
-1283="Cubemap"
74
-?1285="Track orientation"
75
-?1286="Track orientation (poor)"
76
-1300="Audio"
77
-1301="Aucun"
78
-1302="Audio/Video delay"
79
-1303="Attacher un fichier"
80
-1320="Audio/Video synchronization"
81
-?1321="Enter positive value if audio appears earlier than video and negative otherwise."
82
-1322="Audio delay:"
83
-1323="second(s)"
84
-1350="Subtitles"
85
-1351="Aucun"
86
-1353="Attacher un fichier"
87
-1354="Taille De Police"
88
-1355="Parallaxe"
89
-?1356="Text parser"
90
-1357="Placement"
91
-1358="En haut"
92
-1359="Au fond"
93
-?1360="Plain text"
94
-?1361="Lite HTML"
95
-1400="Changer la sortie"
96
-1401="A propos du Plugin..."
97
-1402="Contrôle de I/S"
98
-1420="Synchro Vert."
99
-1421="Voir I/S"
100
-1422="Réduire l'utilisation de CPU"
101
-1500="Aide"
102
-1501="A Propos..."
103
-1502="Vérifier nouvelle version"
104
-1503="Texte de la Licence"
105
-1504="Language"
106
-1505="Empêcher le sommeil"
107
-1506="Conseils d'utilisation"
108
-?1507="Experimental features"
109
-?1508="About system"
110
-?1509="Scale Interface"
111
-1510="Raccourcis"
112
-1511="Paramètres"
113
-1520="Maintenant"
114
-1521="Chaque Jour"
115
-1522="Chaque Mois"
116
-1523="Chaque Année"
117
-1524="Jamais"
118
-1550="Jamais"
119
-1551="Always"
120
-1552="During Playback"
121
-1553="When in Full-screen"
122
-1590="Petit"
123
-1591="Normal"
124
-1592="Gros"
125
-1593="Force HiDPI 2X"
126
-2000="Choix du fichier vidéo à ouvrir"
127
-2001="Choix du fichier vidéo Gauche à ouvrir"
128
-2002="Choix du fichier vidéo Droite à ouvrir"
129
-?2003="File Info"
130
-2004="L'information est indisponible"
131
-?2005="File deletion"
132
-?2006="Do you really want to completely remove this file?"
133
-?2007="Active decoders:"
134
-2010="Emplacement de la capture écran"
135
-2011="Rien à enregistrer!"
136
-2012="Capture non disponible!"
137
-2013="Changement raccourcu clavier pour\n<i>{0}</i>"
138
-?2014="Conflicts with: <i>{0}</i>"
139
-3000="sView - Movie Player"
140
-3001="version"
141
-3002="Movie Player vous permet d'ouvrir des vidéo stéréoscopiques.\n © {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis program is distributed under GPL3.0"
142
-3003="Une nouvelle version de sView est disponible sur le site officiel www.sview.ru.\nSVP, mettez votre programme à jour."
143
-3004="System Info"
144
-4000="Fermer"
145
-4001="Annuler"
146
-4005="Réinitialiser"
147
-4006="Enregistre"
148
-4007="Supprimer"
149
-?4008="Default"
150
-?4009="Defaults"
151
-4010="Affecter"
152
-5000="[gauche]"
153
-5001="[droite]"
154
-5002="Nom de fichier(s)"
155
-5003="Résolution vidéo"
156
-5004="Temps de démarrage"
157
-5005="ms"
158
-5006="Pixel ratio"
159
-5007="Pixel format"
160
-?5008="(does not stored in metadata)"
161
-?5009="(does not match metadata)"
162
-5010="Durée"
163
-?5011="(does not stored in metadata,\nbut detected from file name)"
164
-5300="Titre"
165
-5301="Compositeur"
166
-5302="Artiste"
167
-5303="Artiste de l'album"
168
-5304="Album"
169
-5305="Disque"
170
-5306="Nb. de disques"
171
-5307="Genre"
172
-5308="Commentaire"
173
-5309="Remarques"
174
-5310="Description"
175
-5311="Éditeur"
176
-5312="Copyright"
177
-5313="Encoder"
178
-5314="Ingénieur"
179
-5315="Source"
180
-5316="Temps de création"
181
-5317="Date"
182
-5318="Année"
183
-5319="Langue"
184
-5320="Track"
185
-5321="Nb. of tracks"
186
-5322="Track gain"
187
-5323="Track peak"
188
-5324="Album gain"
189
-5325="Album peak"
190
-6000="Quit program"
191
-6001="Bascule\Plein écran/fenêtre"
192
-6002="Voir I/S"
193
-6003="Format Stéréo d'entrée - Auto-détection"
194
-6004="Format Stéréo d'entrée - Mono"
195
-6005="Format Stéréo d'entrée - Dessus/Dessous"
196
-6006="Format Stéréo d'entrée - Coté/Coté (SbS)"
197
-6007="Afficher les informations sur le fichier"
198
-6008="Playlist - Aller au premier élément"
199
-6009="Playlist - Aller au dernier élément"
200
-6010="Playlist - Aller à l'élément précédent"
201
-6011="Playlist - Aller à l'élément suivant"
202
-6012="Playlist - Aller à l'élément précédent [2]"
203
-6013="Playlist - Aller à l'élément suivant [2]"
204
-6014="Lecture/Pause"
205
-?6015="Stop playback"
206
-?6016="Seek 5 seconds backward"
207
-?6017="Seek 5 seconds forward"
208
-6018="Ouvre autre vidéo"
209
-6019="Enregistrer snapshot"
210
-6020="Supprimer le fichier du système de fichiers"
211
-?6021="Mute/unmute audio"
212
-?6022="Audio volume down"
213
-?6023="Audio volume up"
214
-?6024="Previous audio track"
215
-?6025="Next audio track"
216
-?6026="Next subtitles track"
217
-?6027="Next subtitles track"
218
-?6028="Copy displayed subtitles text"
219
-?6029="Open URL from clipboard"
220
-6030="Affiche/Masque playlist"
221
-6031="Réinitialiser réglage de l'image"
222
-6032="Réinitialiser position de l'image"
223
-6033="Inverser Gauche/Droite"
224
-?6034="Gamma correction - decrease"
225
-?6035="Gamma correction - increase"
226
-?6036="DX separation - decrease"
227
-?6037="DX separation - increase"
228
-?6038="DY separation - decrease"
229
-?6039="DY separation - increase"
230
-?6040="Angular separation - decrease"
231
-?6041="Angular separation - increase"
232
-6042="Faire pivoter un objet de 90 degrés vers la gauche"
233
-6043="Faire pivoter un objet de 90 degrés vers la droite"
234
-6044="Sens inverse des aiguilles d’une montre"
235
-6045="Sens des aiguilles d’une montre"
236
-6046="Activer / désactiver le mode panorama"
237
-6047="Naviguer vers la gauche"
238
-6048="Naviguer vers la droite"
239
-6049="Naviguer vers le haut"
240
-6050="Naviguer vers le bas"
241
-6051="Zoom"
242
-6052="Dézoomer"
243
-?6053="Y Rotation - left"
244
-?6054="Y Rotation - right"
245
-?6055="X Rotation - up"
246
-?6056="X Rotation - down"
247
-6057="Activer / désactiver le mode panorama"
248
+1002=Gauche/Droite inversé
249
+1003=Gauche/Droite normal
250
+1004=Format entrée:
251
+1015=Ouvre autre vidéo
252
+1020=Lecture/Pause
253
+1021=Affiche/Masque playlist
254
+1022=Fichier Précédent
255
+1023=Fichier Suivant
256
+1029=Bascule\Plein écran/fenêtre
257
+1100=Média
258
+1101=Ouvre Video...
259
+1102=Enregistre Capture...
260
+1103=Format Stéréo d'entrée
261
+1170=File info
262
+1104=Audio Device
263
+1105=Aléatorie
264
+1106=Médias récents
265
+1107=Video decoding on GPU
266
+1108=Web UI
267
+1109=Quitter
268
+1110=Depuis un fichier
269
+1111=2 Fichiers Gauche+Droit
270
+1130=Source
271
+1131=Mono
272
+1132=Cross-eyed
273
+1133=Coté/Coté (SbS)
274
+1134=Dessus/Dessous(D/G)
275
+1135=Dessus/Dessous(G/D)
276
+1136=Entrelacé
277
+1137=Anaglyphe Rouge/Bleu
278
+1138=Anaglyphe Vert/Magenta
279
+1139=Anaglyphe Jaune/Bleu
280
+1140=Frame-sequential
281
+1141=2x720p in 1080p tiled
282
+1142=2 Streams
283
+1160=Effacer l'historique
284
+1180=Arrêter
285
+1181=Lancez une fois
286
+1182=Lancer à chaque fois
287
+1185=Afficher les erreurs
288
+?1186=Web UI can not be started on {0} port!
289
+1200=Affichage
290
+1201=Sortie Stéréo
291
+1202=Plein Ecran
292
+1203=Réinitialisation
293
+1204=Inverser Gauche/Droite
294
+1205=Ratio d'affichage
295
+1206=Lissage antialiasing
296
+1207=Réglage de l'image
297
+1208=Panorama
298
+1210=Stéréo
299
+1211=Vue Gauche
300
+1212=Vue Droite
301
+1213=Coté/Coté (SbS)
302
+1214=Cross-eyed
303
+1250=Source
304
+1251=Garder après redémarrage
305
+?1252=Heal anamorphic 1080p/720p
306
+1260=Plus proche
307
+1261=Lineaire
308
+1262=Blend Deinterlace
309
+1270=Rétablir par défaut
310
+1271=Brightness
311
+1272=Saturation
312
+1273=Gamma
313
+1280=Plan
314
+1281=Sphère
315
+1282=Cylindre
316
+1283=Cubemap
317
+?1285=Track orientation
318
+?1286=Track orientation (poor)
319
+1300=Audio
320
+1301=Aucun
321
+1302=Audio/Video delay
322
+1303=Attacher un fichier
323
+1320=Audio/Video synchronization
324
+?1321=Enter positive value if audio appears earlier than video and negative otherwise.
325
+1322=Audio delay:
326
+1323=second(s)
327
+1350=Subtitles
328
+1351=Aucun
329
+1353=Attacher un fichier
330
+1354=Taille De Police
331
+1355=Parallaxe
332
+?1356=Text parser
333
+1357=Placement
334
+1358=En haut
335
+1359=Au fond
336
+?1360=Plain text
337
+?1361=Lite HTML
338
+1400=Changer la sortie
339
+1401=A propos du Plugin...
340
+1402=Contrôle de I/S
341
+1420=Synchro Vert.
342
+1421=Voir I/S
343
+1422=Réduire l'utilisation de CPU
344
+1500=Aide
345
+1501=A Propos...
346
+1502=Vérifier nouvelle version
347
+1503=Texte de la Licence
348
+1504=Language
349
+1505=Empêcher le sommeil
350
+1506=Conseils d'utilisation
351
+?1507=Experimental features
352
+?1508=About system
353
+?1509=Scale Interface
354
+1510=Raccourcis
355
+1511=Paramètres
356
+1520=Maintenant
357
+1521=Chaque Jour
358
+1522=Chaque Mois
359
+1523=Chaque Année
360
+1524=Jamais
361
+1550=Jamais
362
+1551=Always
363
+1552=During Playback
364
+1553=When in Full-screen
365
+1590=Petit
366
+1591=Normal
367
+1592=Gros
368
+1593=Force HiDPI 2X
369
+2000=Choix du fichier vidéo à ouvrir
370
+2001=Choix du fichier vidéo Gauche à ouvrir
371
+2002=Choix du fichier vidéo Droite à ouvrir
372
+?2003=File Info
373
+2004=L'information est indisponible
374
+?2005=File deletion
375
+?2006=Do you really want to completely remove this file?
376
+?2007=Active decoders:
377
+2010=Emplacement de la capture écran
378
+2011=Rien à enregistrer!
379
+2012=Capture non disponible!
380
+2013=Changement raccourcu clavier pour\n<i>{0}</i>
381
+?2014=Conflicts with: <i>{0}</i>
382
+3000=sView - Movie Player
383
+3001=version
384
+3002=Movie Player vous permet d'ouvrir des vidéo stéréoscopiques.\n © {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis program is distributed under GPL3.0
385
+3003=Une nouvelle version de sView est disponible sur le site officiel www.sview.ru.\nSVP, mettez votre programme à jour.
386
+3004=System Info
387
+4000=Fermer
388
+4001=Annuler
389
+4005=Réinitialiser
390
+4006=Enregistre
391
+4007=Supprimer
392
+?4008=Default
393
+?4009=Defaults
394
+4010=Affecter
395
+5000=[gauche]
396
+5001=[droite]
397
+5002=Nom de fichier(s)
398
+5003=Résolution vidéo
399
+5004=Temps de démarrage
400
+5005=ms
401
+5006=Pixel ratio
402
+5007=Pixel format
403
+?5008=(does not stored in metadata)
404
+?5009=(does not match metadata)
405
+5010=Durée
406
+?5011=(does not stored in metadata,\nbut detected from file name)
407
+5300=Titre
408
+5301=Compositeur
409
+5302=Artiste
410
+5303=Artiste de l'album
411
+5304=Album
412
+5305=Disque
413
+5306=Nb. de disques
414
+5307=Genre
415
+5308=Commentaire
416
+5309=Remarques
417
+5310=Description
418
+5311=Éditeur
419
+5312=Copyright
420
+5313=Encoder
421
+5314=Ingénieur
422
+5315=Source
423
+5316=Temps de création
424
+5317=Date
425
+5318=Année
426
+5319=Langue
427
+5320=Track
428
+5321=Nb. of tracks
429
+5322=Track gain
430
+5323=Track peak
431
+5324=Album gain
432
+5325=Album peak
433
+6000=Quit program
434
+6001=Bascule\Plein écran/fenêtre
435
+6002=Voir I/S
436
+6003=Format Stéréo d'entrée - Auto-détection
437
+6004=Format Stéréo d'entrée - Mono
438
+6005=Format Stéréo d'entrée - Dessus/Dessous
439
+6006=Format Stéréo d'entrée - Coté/Coté (SbS)
440
+6007=Afficher les informations sur le fichier
441
+6008=Playlist - Aller au premier élément
442
+6009=Playlist - Aller au dernier élément
443
+6010=Playlist - Aller à l'élément précédent
444
+6011=Playlist - Aller à l'élément suivant
445
+6012=Playlist - Aller à l'élément précédent [2]
446
+6013=Playlist - Aller à l'élément suivant [2]
447
+6014=Lecture/Pause
448
+?6015=Stop playback
449
+?6016=Seek 5 seconds backward
450
+?6017=Seek 5 seconds forward
451
+6018=Ouvre autre vidéo
452
+6019=Enregistrer snapshot
453
+6020=Supprimer le fichier du système de fichiers
454
+?6021=Mute/unmute audio
455
+?6022=Audio volume down
456
+?6023=Audio volume up
457
+?6024=Previous audio track
458
+?6025=Next audio track
459
+?6026=Previous subtitles track
460
+?6027=Next subtitles track
461
+?6028=Copy displayed subtitles text
462
+?6029=Open URL from clipboard
463
+6030=Affiche/Masque playlist
464
+6031=Réinitialiser réglage de l'image
465
+6032=Réinitialiser position de l'image
466
+6033=Inverser Gauche/Droite
467
+?6034=Gamma correction - decrease
468
+?6035=Gamma correction - increase
469
+?6036=DX separation - decrease
470
+?6037=DX separation - increase
471
+?6038=DY separation - decrease
472
+?6039=DY separation - increase
473
+?6040=Angular separation - decrease
474
+?6041=Angular separation - increase
475
+6042=Faire pivoter un objet de 90 degrés vers la gauche
476
+6043=Faire pivoter un objet de 90 degrés vers la droite
477
+6044=Sens inverse des aiguilles d’une montre
478
+6045=Sens des aiguilles d’une montre
479
+6046=Activer / désactiver le mode panorama
480
+6047=Naviguer vers la gauche
481
+6048=Naviguer vers la droite
482
+6049=Naviguer vers le haut
483
+6050=Naviguer vers le bas
484
+6051=Zoom
485
+6052=Dézoomer
486
+?6053=Y Rotation - left
487
+?6054=Y Rotation - right
488
+?6055=X Rotation - up
489
+?6056=X Rotation - down
490
+6057=Activer / désactiver le mode panorama
491
sview-15_10.tar.gz/StMoviePlayer/lang/german/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/german/StMoviePlayer.lng Changed
491
 
1
@@ -1,246 +1,246 @@
2
 # German translation file for StMoviePlayer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1002="L&R Vertauschen An"
6
-1003="L&R Vertauschen Aus"
7
-1004="Quellformat:"
8
-1015="Öffnen anderen Film"
9
-1020="Wiedergabe/Pause"
10
-1021="Anzeigen/ausblenden Wiedergabeliste"
11
-1022="Vorheriges Stück"
12
-1023="Nachfolgendes Stück"
13
-1029="Vollbildmodus/Fenstermodus"
14
-1100="Medien"
15
-1101="Film öffnen..."
16
-1102="Videoschnappschuss speichern..."
17
-1103="Quelle Stereo-Format"
18
-1170="Datei-Info"
19
-1104="Audiogerät"
20
-1105="Zufällig"
21
-1106="Zuletzt geöffnete Medien öffnen"
22
-1107="GPU-basierter Video-Dekodierung"
23
-1108="Web UI"
24
-1109="Beenden"
25
-1110="Einer Datei"
26
-1111="Zwei Dateien"
27
-1130="Quelle"
28
-1131="Mono"
29
-1132="Schielend"
30
-1133="Parallel Pair"
31
-1134="Over/Under (R/L)"
32
-1135="Over/Under (L/R)"
33
-1136="Interlaced"
34
-1137="Anaglyph Rot/Cyan"
35
-1138="Anaglyph Grün/Rot+Blau"
36
-1139="Anaglyph Gelb/Blau"
37
-1140="Rahmen-sequentielle"
38
-1141="2x720p in 1080p tiled"
39
-1142="2 Streams"
40
-1160="Verlauf löschen"
41
-1180="Ausschalten"
42
-1181="Starten einmal"
43
-1182="Starten jedesmal"
44
-1185="Fehler anzeigen"
45
-?1186="Web UI can not be started on {0} port!"
46
-1200="Ansicht"
47
-1201="Stereo-Ausgang"
48
-1202="Vollbild"
49
-1203="Zurückstellen"
50
-1204="L&R Vertauschen"
51
-1205="Seitenverhältnis"
52
-1206="Glatte Filter"
53
-1207="Bildeinstellung"
54
-1208="Panorama"
55
-1210="Stereo"
56
-1211="Linke Bild"
57
-1212="Rechte Bild"
58
-1213="Parallel Pair"
59
-1214="Cross-eyed"
60
-1250="Quelle"
61
-1251="Halten beim Neustart"
62
-?1252="Heal anamorphic 1080p/720p"
63
-1260="Nearest"
64
-1261="Linear"
65
-1262="Blend Deinterlace"
66
-1270="Auf Standardwerte zurücksetzen"
67
-1271="Helligkeit"
68
-1272="Sättigung"
69
-1273="Gamma"
70
-1280="Fläche"
71
-1281="Kugel"
72
-1282="Zylinder"
73
-1283="Cubemap"
74
-?1285="Track orientation"
75
-?1286="Track orientation (poor)"
76
-1300="Audio"
77
-1301="keiner"
78
-1302="Audio/Video Verzögerung"
79
-1303="Bringen aus der Datei"
80
-1320="Audio/Video Synchronisierung"
81
-1321="Enter positive value if audio appears earlier than video and negative otherwise."
82
-1322="Audioverzögerung:"
83
-1323="Sek."
84
-1350="Untertitel"
85
-1351="keiner"
86
-1353="Bringen aus der Datei"
87
-1354="Schriftgröße"
88
-1355="Parallax"
89
-1356="Text parser"
90
-1357="Platzierungen"
91
-1358="Top"
92
-1359="Boden"
93
-1360="Plain text"
94
-1361="Lite HTML"
95
-1400="Gerät ändern"
96
-1401="Über Plugin..."
97
-1402="FPS Kontrolle"
98
-1420="VSync"
99
-1421="Zeige Meter"
100
-1422="Reduce CPU usage"
101
-1500="Hilfe"
102
-1501="Über..."
103
-1502="Nach Updates suchen"
104
-1503="Lizenztext"
105
-1504="Language"
106
-1505="Blockieren Schlaf"
107
-1506="Anwendertipps"
108
-1507="Experimentelle Funktionen"
109
-1508="Über System"
110
-1509="Maßstab Benutzeroberfläche"
111
-1510="Hotkeys"
112
-1511="Einstellungen"
113
-1520="jetzt"
114
-1521="täglich"
115
-1522="wöchentlich"
116
-1523="jährlich"
117
-1524="nie"
118
-1550="nie"
119
-1551="immer"
120
-1552="während der Wiedergabe"
121
-1553="wenn in Vollbild"
122
-1590="klein"
123
-1591="normal"
124
-1592="groß"
125
-1593="erzwingen HiDPI 2X"
126
-2000="Wählen die Videodatei zu öffnen"
127
-2001="Wählen die linke Videodatei zu öffnen"
128
-2002="Wählen die rechte Videodatei zu öffnen"
129
-2003="Datei-Info"
130
-2004="Information nicht verfügbar"
131
-2005="Löschen von Dateien"
132
-?2006="Do you really want to completely remove this file?"
133
-?2007="Active decoders:"
134
-2010="Wählen einen Speicherort für Videoschnappschuss"
135
-2011="Nichts zu speichern!"
136
-2012="Schnappschuss ist nicht verfügbar!"
137
-2013="Hotkey ändern\n<i>{0}</i>"
138
-2014="Konflikten: <i>{0}</i>"
139
-3000="sView - Movie Player"
140
-3001="Version"
141
-?3002="Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0"
142
-?3003="A new version of sView is available on the official site www.sview.ru.\nPlease update your program."
143
-3004="System Info"
144
-4000="Schließen"
145
-4001="Abbrechen"
146
-4005="Rücksetzen"
147
-4006="Speichern"
148
-4007="Löschen"
149
-4008="Default"
150
-4009="Defaults"
151
-4010="Zuweisen"
152
-5000="[linke]"
153
-5001="[rechte]"
154
-5002="Dateiname(n)"
155
-5003="Video dimensions"
156
-5004="Ladezeit"
157
-5005="ms"
158
-5006="Pixelseitenverhältnis"
159
-5007="Pixel format"
160
-5008="(nicht in Metadaten gespeichert)"
161
-5009="(keine Metadaten übereinstimmen)"
162
-5010="Dauer"
163
-5011="(nicht in Metadaten gespeichert,\nsondern von Dateinamen detektiert)"
164
-5300="Titel"
165
-5301="Composer"
166
-5302="Artist"
167
-5303="Album artist"
168
-5304="Album"
169
-5305="Disc"
170
-5306="Nb. of discs"
171
-5307="Genre"
172
-5308="Kommentar"
173
-5309="Notes"
174
-5310="Beschreibung"
175
-5311="Publisher"
176
-5312="Copyright"
177
-5313="Encoder"
178
-5314="Engineer"
179
-5315="Source"
180
-5316="Creation time"
181
-5317="Datum"
182
-5318="Jahr"
183
-5319="Sprache"
184
-5320="Track"
185
-5321="Nb. of tracks"
186
-5322="Track gain"
187
-5323="Track peak"
188
-5324="Album gain"
189
-5325="Album peak"
190
-6000="Beenden"
191
-6001="Vollbildmodus/Fenstermodus"
192
-6002="FPS anzeigen"
193
-6003="Stereo-Format - Autoerkennung"
194
-6004="Stereo-Format - Mono"
195
-6005="Stereo-Format - Over/Under"
196
-6006="Stereo-Format - Side by side"
197
-6007="Datei info"
198
-6008="Wiedergabeliste - Zum ersten Element"
199
-6009="Wiedergabeliste - Zum letzten Element"
200
-6010="Wiedergabeliste - Zum vorherigen Element"
201
-6011="Wiedergabeliste - Zum nächsten Element"
202
-6012="Wiedergabeliste - Zum vorherigen Element [2]"
203
-6013="Wiedergabeliste - Zum nächsten Element [2]"
204
-6014="Wiedergabe/Pause"
205
-6015="Stoppen der Wiedergabe"
206
-6016="Suchen 5 Sekunden rückwärts"
207
-6017="5 Sekunden nach vorne zu suchen"
208
-6018="Film öffnen"
209
-6019="Videoschnappschuss speichern"
210
-6020="Die Datei löschen aus dem Dateisystem"
211
-6021="Ton aus/Ton ein"
212
-6022="Audio Lautstärke"
213
-6023="Audio Lautstärke"
214
-?6024="Previous audio track"
215
-?6025="Next audio track"
216
-?6026="Next subtitles track"
217
-?6027="Next subtitles track"
218
-6028="Copy angezeigt Untertiteltext"
219
-?6029="Open URL from clipboard"
220
-6030="Anzeigen/ausblenden Wiedergabeliste"
221
-6031="Zurücksetzen Bildeinstellung"
222
-6032="Zurücksetzen Bildposition"
223
-6033="L&R Vertauschen"
224
-6034="Gamma-Korrektur - verringern"
225
-6035="Gamma-Korrektur - erhöhen"
226
-6036="DX Trennung - verringern"
227
-6037="DX Trennung - erhöhen"
228
-6038="DY Trennung - verringern"
229
-6039="DY Trennung - erhöhen"
230
-6040="Winkelabstand - verringern"
231
-6041="Winkelabstand - erhöhen"
232
-6042="Um 90 Grad gegen Uhrzeigersinn drehen"
233
-6043="Um 90 Grad im Uhrzeigersinn drehen"
234
-6044="Drehen gegen den Uhrzeigersinn"
235
-6045="Im Uhrzeigersinn drehen"
236
-6046="Aktivieren / Deaktivieren der Panorama-Modus"
237
-6047="Navigieren nach links"
238
-6048="Navigieren nach rechts"
239
-6049="Navigieren nach oben"
240
-6050="Navigieren nach unten"
241
-6051="Zoomen"
242
-6052="Herauszoomen"
243
-6053="Y-Drehung - links"
244
-6054="Y-Drehung - rechts"
245
-6055="X-Drehung - nach oben"
246
-6056="X-Drehung - nach unten"
247
-6057="Aktivieren / Deaktivieren der Panorama-Modus"
248
+1002=L&R Vertauschen An
249
+1003=L&R Vertauschen Aus
250
+1004=Quellformat:
251
+1015=Öffnen anderen Film
252
+1020=Wiedergabe/Pause
253
+1021=Anzeigen/ausblenden Wiedergabeliste
254
+1022=Vorheriges Stück
255
+1023=Nachfolgendes Stück
256
+1029=Vollbildmodus/Fenstermodus
257
+1100=Medien
258
+1101=Film öffnen...
259
+1102=Videoschnappschuss speichern...
260
+1103=Quelle Stereo-Format
261
+1170=Datei-Info
262
+1104=Audiogerät
263
+1105=Zufällig
264
+1106=Zuletzt geöffnete Medien öffnen
265
+1107=GPU-basierter Video-Dekodierung
266
+1108=Web UI
267
+1109=Beenden
268
+1110=Einer Datei
269
+1111=Zwei Dateien
270
+1130=Quelle
271
+1131=Mono
272
+1132=Schielend
273
+1133=Parallel Pair
274
+1134=Over/Under (R/L)
275
+1135=Over/Under (L/R)
276
+1136=Interlaced
277
+1137=Anaglyph Rot/Cyan
278
+1138=Anaglyph Grün/Rot+Blau
279
+1139=Anaglyph Gelb/Blau
280
+1140=Rahmen-sequentielle
281
+1141=2x720p in 1080p tiled
282
+1142=2 Streams
283
+1160=Verlauf löschen
284
+1180=Ausschalten
285
+1181=Starten einmal
286
+1182=Starten jedesmal
287
+1185=Fehler anzeigen
288
+?1186=Web UI can not be started on {0} port!
289
+1200=Ansicht
290
+1201=Stereo-Ausgang
291
+1202=Vollbild
292
+1203=Zurückstellen
293
+1204=L&R Vertauschen
294
+1205=Seitenverhältnis
295
+1206=Glatte Filter
296
+1207=Bildeinstellung
297
+1208=Panorama
298
+1210=Stereo
299
+1211=Linke Bild
300
+1212=Rechte Bild
301
+1213=Parallel Pair
302
+1214=Cross-eyed
303
+1250=Quelle
304
+1251=Halten beim Neustart
305
+?1252=Heal anamorphic 1080p/720p
306
+1260=Nearest
307
+1261=Linear
308
+1262=Blend Deinterlace
309
+1270=Auf Standardwerte zurücksetzen
310
+1271=Helligkeit
311
+1272=Sättigung
312
+1273=Gamma
313
+1280=Fläche
314
+1281=Kugel
315
+1282=Zylinder
316
+1283=Cubemap
317
+?1285=Track orientation
318
+?1286=Track orientation (poor)
319
+1300=Audio
320
+1301=keiner
321
+1302=Audio/Video Verzögerung
322
+1303=Bringen aus der Datei
323
+1320=Audio/Video Synchronisierung
324
+1321=Enter positive value if audio appears earlier than video and negative otherwise.
325
+1322=Audioverzögerung:
326
+1323=Sek.
327
+1350=Untertitel
328
+1351=keiner
329
+1353=Bringen aus der Datei
330
+1354=Schriftgröße
331
+1355=Parallax
332
+1356=Text parser
333
+1357=Platzierungen
334
+1358=Top
335
+1359=Boden
336
+1360=Plain text
337
+1361=Lite HTML
338
+1400=Gerät ändern
339
+1401=Über Plugin...
340
+1402=FPS Kontrolle
341
+1420=VSync
342
+1421=Zeige Meter
343
+1422=Reduce CPU usage
344
+1500=Hilfe
345
+1501=Über...
346
+1502=Nach Updates suchen
347
+1503=Lizenztext
348
+1504=Language
349
+1505=Blockieren Schlaf
350
+1506=Anwendertipps
351
+1507=Experimentelle Funktionen
352
+1508=Über System
353
+1509=Maßstab Benutzeroberfläche
354
+1510=Hotkeys
355
+1511=Einstellungen
356
+1520=jetzt
357
+1521=täglich
358
+1522=wöchentlich
359
+1523=jährlich
360
+1524=nie
361
+1550=nie
362
+1551=immer
363
+1552=während der Wiedergabe
364
+1553=wenn in Vollbild
365
+1590=klein
366
+1591=normal
367
+1592=groß
368
+1593=erzwingen HiDPI 2X
369
+2000=Wählen die Videodatei zu öffnen
370
+2001=Wählen die linke Videodatei zu öffnen
371
+2002=Wählen die rechte Videodatei zu öffnen
372
+2003=Datei-Info
373
+2004=Information nicht verfügbar
374
+2005=Löschen von Dateien
375
+?2006=Do you really want to completely remove this file?
376
+?2007=Active decoders:
377
+2010=Wählen einen Speicherort für Videoschnappschuss
378
+2011=Nichts zu speichern!
379
+2012=Schnappschuss ist nicht verfügbar!
380
+2013=Hotkey ändern\n<i>{0}</i>
381
+2014=Konflikten: <i>{0}</i>
382
+3000=sView - Movie Player
383
+3001=Version
384
+?3002=Movie player allows you to play stereoscopic video.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis program is distributed under GPL3.0
385
+?3003=A new version of sView is available on the official site www.sview.ru.\nPlease update your program.
386
+3004=System Info
387
+4000=Schließen
388
+4001=Abbrechen
389
+4005=Rücksetzen
390
+4006=Speichern
391
+4007=Löschen
392
+4008=Default
393
+4009=Defaults
394
+4010=Zuweisen
395
+5000=[linke]
396
+5001=[rechte]
397
+5002=Dateiname(n)
398
+5003=Video dimensions
399
+5004=Ladezeit
400
+5005=ms
401
+5006=Pixelseitenverhältnis
402
+5007=Pixel format
403
+5008=(nicht in Metadaten gespeichert)
404
+5009=(keine Metadaten übereinstimmen)
405
+5010=Dauer
406
+5011=(nicht in Metadaten gespeichert,\nsondern von Dateinamen detektiert)
407
+5300=Titel
408
+5301=Composer
409
+5302=Artist
410
+5303=Album artist
411
+5304=Album
412
+5305=Disc
413
+5306=Nb. of discs
414
+5307=Genre
415
+5308=Kommentar
416
+5309=Notes
417
+5310=Beschreibung
418
+5311=Publisher
419
+5312=Copyright
420
+5313=Encoder
421
+5314=Engineer
422
+5315=Source
423
+5316=Creation time
424
+5317=Datum
425
+5318=Jahr
426
+5319=Sprache
427
+5320=Track
428
+5321=Nb. of tracks
429
+5322=Track gain
430
+5323=Track peak
431
+5324=Album gain
432
+5325=Album peak
433
+6000=Beenden
434
+6001=Vollbildmodus/Fenstermodus
435
+6002=FPS anzeigen
436
+6003=Stereo-Format - Autoerkennung
437
+6004=Stereo-Format - Mono
438
+6005=Stereo-Format - Over/Under
439
+6006=Stereo-Format - Side by side
440
+6007=Datei info
441
+6008=Wiedergabeliste - Zum ersten Element
442
+6009=Wiedergabeliste - Zum letzten Element
443
+6010=Wiedergabeliste - Zum vorherigen Element
444
+6011=Wiedergabeliste - Zum nächsten Element
445
+6012=Wiedergabeliste - Zum vorherigen Element [2]
446
+6013=Wiedergabeliste - Zum nächsten Element [2]
447
+6014=Wiedergabe/Pause
448
+6015=Stoppen der Wiedergabe
449
+6016=Suchen 5 Sekunden rückwärts
450
+6017=5 Sekunden nach vorne zu suchen
451
+6018=Film öffnen
452
+6019=Videoschnappschuss speichern
453
+6020=Die Datei löschen aus dem Dateisystem
454
+6021=Ton aus/Ton ein
455
+6022=Audio Lautstärke
456
+6023=Audio Lautstärke
457
+?6024=Previous audio track
458
+?6025=Next audio track
459
+?6026=Previous subtitles track
460
+?6027=Next subtitles track
461
+6028=Copy angezeigt Untertiteltext
462
+?6029=Open URL from clipboard
463
+6030=Anzeigen/ausblenden Wiedergabeliste
464
+6031=Zurücksetzen Bildeinstellung
465
+6032=Zurücksetzen Bildposition
466
+6033=L&R Vertauschen
467
+6034=Gamma-Korrektur - verringern
468
+6035=Gamma-Korrektur - erhöhen
469
+6036=DX Trennung - verringern
470
+6037=DX Trennung - erhöhen
471
+6038=DY Trennung - verringern
472
+6039=DY Trennung - erhöhen
473
+6040=Winkelabstand - verringern
474
+6041=Winkelabstand - erhöhen
475
+6042=Um 90 Grad gegen Uhrzeigersinn drehen
476
+6043=Um 90 Grad im Uhrzeigersinn drehen
477
+6044=Drehen gegen den Uhrzeigersinn
478
+6045=Im Uhrzeigersinn drehen
479
+6046=Aktivieren / Deaktivieren der Panorama-Modus
480
+6047=Navigieren nach links
481
+6048=Navigieren nach rechts
482
+6049=Navigieren nach oben
483
+6050=Navigieren nach unten
484
+6051=Zoomen
485
+6052=Herauszoomen
486
+6053=Y-Drehung - links
487
+6054=Y-Drehung - rechts
488
+6055=X-Drehung - nach oben
489
+6056=X-Drehung - nach unten
490
+6057=Aktivieren / Deaktivieren der Panorama-Modus
491
sview-15_10.tar.gz/StMoviePlayer/lang/korean/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/korean/StMoviePlayer.lng Changed
491
 
1
@@ -2,246 +2,246 @@
2
 # @author Kirill Gavrilov
3
 # @translator Kwon Daesuk <hyntel@clunix.com>
4
 --------
5
-1002="좌/우 교체"
6
-1003="좌/우 복원"
7
-1004="소스 형식:"
8
-1015="다른 영상 열기"
9
-1020="재생/멈춤"
10
-1021="재생 목록 보이기/감추기"
11
-1022="앞 파일 재생"
12
-1023="다음 파일 재생"
13
-1029="전환\n전체화면/윈도우화면"
14
-1100="미디어"
15
-1101="파일 열기..."
16
-1102="스냅샷 저장..."
17
-1103="소스 스테레오 형식"
18
-?1170="File info"
19
-1104="오디오 장치"
20
-1105="셔플"
21
-1106="최근 파일"
22
-1107="GPU 비디오 디코딩"
23
-1108="웹 UI"
24
-1109="종료"
25
-1110="파일 하나에서 재생"
26
-1111="좌+우 각 파일에서 재생"
27
-1130="자동감지"
28
-1131="단일영상"
29
-1132="크로스-아이"
30
-1133="패럴렐 페어"
31
-1134="상/하 (R/L)"
32
-1135="상/하 (L/R)"
33
-1136="인터레이스"
34
-?1137="red/cyan"
35
-?1138="green/red+blue"
36
-?1139="yellow/blue"
37
-1140="순차 프레임"
38
-1141="2x720p in 1080p tiled"
39
-1142="2 스트림"
40
-1160="재생 기록 소거"
41
-1180="끄기"
42
-1181="한번만 실행"
43
-1182="매번 실행"
44
-1185="오류 보이기"
45
-1186="웹 UI {0} 포트에서 시작 불가!"
46
-1200="보기"
47
-1201="입체 출력"
48
-1202="전체 화면"
49
-1203="리셋"
50
-1204="좌/우 교체"
51
-1205="화면 비율"
52
-1206="Smooth 필터"
53
-1207="이미지 수정"
54
-?1208="Panorama"
55
-1210="Stereo"
56
-1211="왼쪽 View"
57
-1212="오른쪽 View"
58
-1213="패럴렐 페어"
59
-1214="크로스 아이"
60
-?1250="Source"
61
-1251="재시작시 유지"
62
-?1252="Heal anamorphic 1080p/720p"
63
-?1260="Nearest"
64
-?1261="Linear"
65
-?1262="Blend Deinterlace"
66
-1270="초기값 리셋"
67
-1271="밝기"
68
-?1272="Saturation"
69
-1273="감마"
70
-?1280="Plane"
71
-?1281="Sphere"
72
-?1282="Cylinder"
73
-?1283="Cubemap"
74
-?1285="Track orientation"
75
-?1286="Track orientation (poor)"
76
-?1300="Audio"
77
-1301="없음"
78
-1302="오디오/비디오 지연시간"
79
-1303="파일에서 불러오기"
80
-1320="오디오/비디오 동기화"
81
-1321="오디오가 화면보다 먼저 들리면 +값을, 반대이면 -값을 넣으시오"
82
-1322="오디오 지연:"
83
-1323="초(s)"
84
-1350="자막"
85
-1351="없음"
86
-1353="파일에서 불러오기"
87
-1354="폰트 크기"
88
-?1355="Parallax"
89
-?1356="Text parser"
90
-?1357="Placement"
91
-?1358="Top"
92
-?1359="Bottom"
93
-?1360="Plain text"
94
-?1361="Lite HTML"
95
-1400="장치 변경"
96
-?1401="About Plugin..."
97
-?1402="FPS 제어"
98
-?1420="VSync"
99
-?1421="Show Meter"
100
-1422="CPU 부하 감소"
101
-1500="도움말"
102
-1501="이 프로그램에 대해..."
103
-1502="업데이트 확인"
104
-1503="라이선스 문서"
105
-1504="언어 (Language)"
106
-1505="블록 슬리핑"
107
-1506="사용자 팁"
108
-1507="실험적 기능"
109
-1508="시스템에 대해"
110
-?1509="Interface Scale"
111
-?1510="Hotkeys"
112
-?1511="Settings"
113
-1520="지금"
114
-1521="매일"
115
-1522="매주"
116
-1523="매년"
117
-1524="하지않음"
118
-1550="하지않음"
119
-1551="항상"
120
-1552="재생중"
121
-1553="전체화면중"
122
-1590="작게"
123
-1591="보통"
124
-1592="크게"
125
-1593="HiDPI 2X 로"
126
-2000="재생할 비디오 파일을 선택하시오"
127
-2001="좌안 비디오 파일을 선택하시오"
128
-2002="우안 비디오 파일을 선택하시오"
129
-?2003="File Info"
130
-?2004="File information is unavailable"
131
-?2005="File deletion"
132
-?2006="Do you really want to completely remove this file?"
133
-?2007="Active decoders:"
134
-2010="스냅샷을 저장할 위치를 선택하시오"
135
-2011="저장할 수 없음!"
136
-2012="스냅샷 없음!"
137
-?2013="Assign new Hot Key for action\n<i>{0}</i>"
138
-?2014="Conflicts with: <i>{0}</i>"
139
-3000="sView - 3D 동영상 플레이어"
140
-3001="version"
141
-3002="이 동영상 플레이어는 스테레오스코픽 동영상을 재생할 수 있습니다.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\n이 프로그램은 GPL3.0 하에 배포됩니다."
142
-3003="sView 새 버전은 www.sview.ru 에서 얻으실 수 있습니다.\n 프로그램을 업데이트 하세요."
143
-?3004="System Info"
144
-4000="닫기"
145
-?4001="Cancel"
146
-4005="리셋"
147
-?4006="Save"
148
-?4007="Delete"
149
-?4008="Default"
150
-?4009="Defaults"
151
-?4010="Assign"
152
-?5000="[left]"
153
-?5001="[right]"
154
-?5002="File name(s)"
155
-?5003="Video dimensions"
156
-?5004="Load time"
157
-?5005="ms"
158
-?5006="Pixel ratio"
159
-?5007="Pixel format"
160
-?5008="(does not stored in metadata)"
161
-?5009="(does not match metadata)"
162
-?5010="Duration"
163
-?5011="(does not stored in metadata,\nbut detected from file name)"
164
-?5300="Title"
165
-?5301="Composer"
166
-?5302="Artist"
167
-?5303="Album artist"
168
-?5304="Album"
169
-?5305="Disc"
170
-?5306="Nb. of discs"
171
-?5307="Genre"
172
-?5308="Comment"
173
-?5309="Notes"
174
-?5310="Description"
175
-?5311="Publisher"
176
-?5312="Copyright"
177
-?5313="Encoder"
178
-?5314="Engineer"
179
-?5315="Source"
180
-?5316="Creation time"
181
-?5317="Date"
182
-?5318="Year"
183
-?5319="Language"
184
-?5320="Track"
185
-?5321="Nb. of tracks"
186
-?5322="Track gain"
187
-?5323="Track peak"
188
-?5324="Album gain"
189
-?5325="Album peak"
190
-6000="나가기"
191
-6001="전환 전체화면/윈도화면"
192
-?6002="Show/hide FPS meter"
193
-6003="입력 스테레오 형식: 자동감지"
194
-6004="입력 스테레오 형식: 모노"
195
-6005="입력 스테레오 형식: 상/하"
196
-6006="입력 스테레오 형식: 크로스-아이"
197
-?6007="Show file info"
198
-?6008="Playlist - Go to the first item"
199
-?6009="Playlist - Go to the last item"
200
-6010="앞 파일 재생"
201
-6011="다음 파일 재생"
202
-6012="앞 파일 재생 [2]"
203
-6013="다음 파일 재생 [2]"
204
-6014="재생/멈춤"
205
-?6015="Stop playback"
206
-?6016="Seek 5 seconds backward"
207
-?6017="Seek 5 seconds forward"
208
-6018="파일 열기"
209
-6019="스냅샷 저장"
210
-?6020="Delete the file from file system"
211
-?6021="Mute/unmute audio"
212
-?6022="Audio volume down"
213
-?6023="Audio volume up"
214
-?6024="Previous audio track"
215
-?6025="Next audio track"
216
-?6026="Next subtitles track"
217
-?6027="Next subtitles track"
218
-?6028="Copy displayed subtitles text"
219
-?6029="Open URL from clipboard"
220
-6030="재생 목록 보이기/감추기"
221
-?6031="Reset image adjustment"
222
-?6032="Reset image position"
223
-6033="좌/우 변경"
224
-?6034="Gamma correction - decrease"
225
-?6035="Gamma correction - increase"
226
-?6036="DX separation - decrease"
227
-?6037="DX separation - increase"
228
-?6038="DY separation - decrease"
229
-?6039="DY separation - increase"
230
-?6040="Angular separation - decrease"
231
-?6041="Angular separation - increase"
232
-?6042="Rotate 90 degrees counterclockwise"
233
-?6043="Rotate 90 degrees clockwise"
234
-?6044="Rotate counterclockwise"
235
-?6045="Rotate clockwise"
236
-?6046="Enable/disable panorama mode"
237
-?6047="Panning - navigate to the left"
238
-?6048="Panning - navigate to the right"
239
-?6049="Panning - navigate to the top"
240
-?6050="Panning - navigate to the bottom"
241
-?6051="Scale - increment"
242
-?6052="Scale - decrement"
243
-?6053="Y Rotation - left"
244
-?6054="Y Rotation - right"
245
-?6055="X Rotation - up"
246
-?6056="X Rotation - down"
247
-?6057="Enable/disable panorama mode"
248
+1002=좌/우 교체
249
+1003=좌/우 복원
250
+1004=소스 형식:
251
+1015=다른 영상 열기
252
+1020=재생/멈춤
253
+1021=재생 목록 보이기/감추기
254
+1022=앞 파일 재생
255
+1023=다음 파일 재생
256
+1029=전환\n전체화면/윈도우화면
257
+1100=미디어
258
+1101=파일 열기...
259
+1102=스냅샷 저장...
260
+1103=소스 스테레오 형식
261
+?1170=File info
262
+1104=오디오 장치
263
+1105=셔플
264
+1106=최근 파일
265
+1107=GPU 비디오 디코딩
266
+1108=웹 UI
267
+1109=종료
268
+1110=파일 하나에서 재생
269
+1111=좌+우 각 파일에서 재생
270
+1130=자동감지
271
+1131=단일영상
272
+1132=크로스-아이
273
+1133=패럴렐 페어
274
+1134=상/하 (R/L)
275
+1135=상/하 (L/R)
276
+1136=인터레이스
277
+?1137=red/cyan
278
+?1138=green/red+blue
279
+?1139=yellow/blue
280
+1140=순차 프레임
281
+1141=2x720p in 1080p tiled
282
+1142=2 스트림
283
+1160=재생 기록 소거
284
+1180=끄기
285
+1181=한번만 실행
286
+1182=매번 실행
287
+1185=오류 보이기
288
+1186=웹 UI {0} 포트에서 시작 불가!
289
+1200=보기
290
+1201=입체 출력
291
+1202=전체 화면
292
+1203=리셋
293
+1204=좌/우 교체
294
+1205=화면 비율
295
+1206=Smooth 필터
296
+1207=이미지 수정
297
+?1208=Panorama
298
+1210=Stereo
299
+1211=왼쪽 View
300
+1212=오른쪽 View
301
+1213=패럴렐 페어
302
+1214=크로스 아이
303
+?1250=Source
304
+1251=재시작시 유지
305
+?1252=Heal anamorphic 1080p/720p
306
+?1260=Nearest
307
+?1261=Linear
308
+?1262=Blend Deinterlace
309
+1270=초기값 리셋
310
+1271=밝기
311
+?1272=Saturation
312
+1273=감마
313
+?1280=Plane
314
+?1281=Sphere
315
+?1282=Cylinder
316
+?1283=Cubemap
317
+?1285=Track orientation
318
+?1286=Track orientation (poor)
319
+?1300=Audio
320
+1301=없음
321
+1302=오디오/비디오 지연시간
322
+1303=파일에서 불러오기
323
+1320=오디오/비디오 동기화
324
+1321=오디오가 화면보다 먼저 들리면 +값을, 반대이면 -값을 넣으시오
325
+1322=오디오 지연:
326
+1323=초(s)
327
+1350=자막
328
+1351=없음
329
+1353=파일에서 불러오기
330
+1354=폰트 크기
331
+?1355=Parallax
332
+?1356=Text parser
333
+?1357=Placement
334
+?1358=Top
335
+?1359=Bottom
336
+?1360=Plain text
337
+?1361=Lite HTML
338
+1400=장치 변경
339
+?1401=About Plugin...
340
+?1402=FPS 제어
341
+?1420=VSync
342
+?1421=Show Meter
343
+1422=CPU 부하 감소
344
+1500=도움말
345
+1501=이 프로그램에 대해...
346
+1502=업데이트 확인
347
+1503=라이선스 문서
348
+1504=언어 (Language)
349
+1505=블록 슬리핑
350
+1506=사용자 팁
351
+1507=실험적 기능
352
+1508=시스템에 대해
353
+?1509=Interface Scale
354
+?1510=Hotkeys
355
+?1511=Settings
356
+1520=지금
357
+1521=매일
358
+1522=매주
359
+1523=매년
360
+1524=하지않음
361
+1550=하지않음
362
+1551=항상
363
+1552=재생중
364
+1553=전체화면중
365
+1590=작게
366
+1591=보통
367
+1592=크게
368
+1593=HiDPI 2X 로
369
+2000=재생할 비디오 파일을 선택하시오
370
+2001=좌안 비디오 파일을 선택하시오
371
+2002=우안 비디오 파일을 선택하시오
372
+?2003=File Info
373
+?2004=File information is unavailable
374
+?2005=File deletion
375
+?2006=Do you really want to completely remove this file?
376
+?2007=Active decoders:
377
+2010=스냅샷을 저장할 위치를 선택하시오
378
+2011=저장할 수 없음!
379
+2012=스냅샷 없음!
380
+?2013=Assign new Hot Key for action\n<i>{0}</i>
381
+?2014=Conflicts with: <i>{0}</i>
382
+3000=sView - 3D 동영상 플레이어
383
+3001=version
384
+3002=이 동영상 플레이어는 스테레오스코픽 동영상을 재생할 수 있습니다.\n © {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\n이 프로그램은 GPL3.0 하에 배포됩니다.
385
+3003=sView 새 버전은 www.sview.ru 에서 얻으실 수 있습니다.\n 프로그램을 업데이트 하세요.
386
+?3004=System Info
387
+4000=닫기
388
+?4001=Cancel
389
+4005=리셋
390
+?4006=Save
391
+?4007=Delete
392
+?4008=Default
393
+?4009=Defaults
394
+?4010=Assign
395
+?5000=[left]
396
+?5001=[right]
397
+?5002=File name(s)
398
+?5003=Video dimensions
399
+?5004=Load time
400
+?5005=ms
401
+?5006=Pixel ratio
402
+?5007=Pixel format
403
+?5008=(does not stored in metadata)
404
+?5009=(does not match metadata)
405
+?5010=Duration
406
+?5011=(does not stored in metadata,\nbut detected from file name)
407
+?5300=Title
408
+?5301=Composer
409
+?5302=Artist
410
+?5303=Album artist
411
+?5304=Album
412
+?5305=Disc
413
+?5306=Nb. of discs
414
+?5307=Genre
415
+?5308=Comment
416
+?5309=Notes
417
+?5310=Description
418
+?5311=Publisher
419
+?5312=Copyright
420
+?5313=Encoder
421
+?5314=Engineer
422
+?5315=Source
423
+?5316=Creation time
424
+?5317=Date
425
+?5318=Year
426
+?5319=Language
427
+?5320=Track
428
+?5321=Nb. of tracks
429
+?5322=Track gain
430
+?5323=Track peak
431
+?5324=Album gain
432
+?5325=Album peak
433
+6000=나가기
434
+6001=전환 전체화면/윈도화면
435
+?6002=Show/hide FPS meter
436
+6003=입력 스테레오 형식: 자동감지
437
+6004=입력 스테레오 형식: 모노
438
+6005=입력 스테레오 형식: 상/하
439
+6006=입력 스테레오 형식: 크로스-아이
440
+?6007=Show file info
441
+?6008=Playlist - Go to the first item
442
+?6009=Playlist - Go to the last item
443
+6010=앞 파일 재생
444
+6011=다음 파일 재생
445
+6012=앞 파일 재생 [2]
446
+6013=다음 파일 재생 [2]
447
+6014=재생/멈춤
448
+?6015=Stop playback
449
+?6016=Seek 5 seconds backward
450
+?6017=Seek 5 seconds forward
451
+6018=파일 열기
452
+6019=스냅샷 저장
453
+?6020=Delete the file from file system
454
+?6021=Mute/unmute audio
455
+?6022=Audio volume down
456
+?6023=Audio volume up
457
+?6024=Previous audio track
458
+?6025=Next audio track
459
+?6026=Previous subtitles track
460
+?6027=Next subtitles track
461
+?6028=Copy displayed subtitles text
462
+?6029=Open URL from clipboard
463
+6030=재생 목록 보이기/감추기
464
+?6031=Reset image adjustment
465
+?6032=Reset image position
466
+6033=좌/우 변경
467
+?6034=Gamma correction - decrease
468
+?6035=Gamma correction - increase
469
+?6036=DX separation - decrease
470
+?6037=DX separation - increase
471
+?6038=DY separation - decrease
472
+?6039=DY separation - increase
473
+?6040=Angular separation - decrease
474
+?6041=Angular separation - increase
475
+?6042=Rotate 90 degrees counterclockwise
476
+?6043=Rotate 90 degrees clockwise
477
+?6044=Rotate counterclockwise
478
+?6045=Rotate clockwise
479
+?6046=Enable/disable panorama mode
480
+?6047=Panning - navigate to the left
481
+?6048=Panning - navigate to the right
482
+?6049=Panning - navigate to the top
483
+?6050=Panning - navigate to the bottom
484
+?6051=Scale - increment
485
+?6052=Scale - decrement
486
+?6053=Y Rotation - left
487
+?6054=Y Rotation - right
488
+?6055=X Rotation - up
489
+?6056=X Rotation - down
490
+?6057=Enable/disable panorama mode
491
sview-15_10.tar.gz/StMoviePlayer/lang/russian/StMoviePlayer.lng -> sview-15_11.tar.gz/StMoviePlayer/lang/russian/StMoviePlayer.lng Changed
493
 
1
@@ -1,247 +1,247 @@
2
 # Russian translation file for StMoviePlayer program
3
 # @author Kirill Gavrilov
4
 --------
5
-1002="Поменять ракурсы местами"
6
-1003="Отключить реверс ракурсов"
7
-1004="Исходный стереоформат:"
8
-1015="Открыть видеофайл"
9
-1020="Пауза/Воспроизведение"
10
-1021="Отобразить/Скрыть\nсписок файлов"
11
-1022="Предыдущий файл"
12
-1023="Следующий файл"
13
-1029="Оконный/Полноэкранный\nрежим просмотра"
14
-1100="Медиа"
15
-1101="Открыть видео..."
16
-1102="Сохранить кадр..."
17
-1103="Исходный стереоформат"
18
-1170="Информация о файле"
19
-1104="Аудио устройство"
20
-1105="Случайный порядок"
21
-1106="Последние файлы"
22
-1107="Декодирование видео на GPU"
23
-1108="Web UI"
24
-1109="Выход"
25
-1110="Из одного файла"
26
-1111="Левый+Правый файлы"
27
-1130="Исходный"
28
-1131="Моно"
29
-1132="Перекрёстная пара"
30
-1133="Параллельная пара"
31
-1134="Вертикальная пара (П/Л)"
32
-1135="Вертикальная пара (Л/П)"
33
-1136="Чересстрочный"
34
-1137="Анаглиф (Красно-Голубой)"
35
-1138="Анаглиф (Пурпурный)"
36
-1139="Анаглиф (Жёлтый)"
37
-1140="Чередование кадров"
38
-1141="2x720p in 1080p tiled"
39
-1142="2 потока"
40
-1160="Очистить историю"
41
-1180="Отключить"
42
-1181="Запустить один раз"
43
-1182="Запускать при старте"
44
-1185="Показывать ошибки"
45
-1186="Web-интерфейс не может быть запущен на порте {0}!"
46
-1200="Вид"
47
-1201="Вывод стерео"
48
-1202="Полный экран"
49
-1203="Сбросить"
50
-1204="Реверс ракурсов"
51
-1205="Соотношение сторон"
52
-1206="Сглаживание текстур"
53
-1207="Цветокоррекция"
54
-1208="Панорама"
55
-1210="Стерео"
56
-1211="Левый ракурс"
57
-1212="Правый ракурс"
58
-1213="Параллельная пара"
59
-1214="Перекрёстная пара"
60
-1140="Чередование кадров"
61
-1250="Исходное"
62
-1251="Запомнить"
63
-?1252="Heal anamorphic 1080p/720p"
64
-1260="Без сглаживания"
65
-1261="Линейное"
66
-1262="Blend Deinterlace"
67
-1270="Сбросить настройки"
68
-1271="Яркость"
69
-1272="Насыщенность"
70
-1273="Гамма"
71
-1280="Плоскость"
72
-1281="Сфера"
73
-1282="Цилиндр
74
-1283="Куб"
75
-1285="Отслеживать ориентацию"
76
-1286="Отслеживать ориентацию (poor)"
77
-1300="Аудио"
78
-1301="Без звука"
79
-1302="Задержка звука"
80
-1303="Добавить дорожку из файла"
81
-1320="Синхронизация видео со звуком"
82
-1321="Введите положительное значение, если звук опережает видео, и отрицательное в противном случае."
83
-1322="Задержка звука:"
84
-1323="секунд"
85
-1350="Субтитры"
86
-1351="Без титров"
87
-1353="Добавить файл"
88
-1400="Выбрать устройство"
89
-1401="О модуле..."
90
-1402="FPS Control"
91
-1420="Верт. синхронизация"
92
-1421="Отображать FPS"
93
-1422="Ограничить использование CPU"
94
-1500="Помощь"
95
-1501="О программе..."
96
-1502="Проверить обновления"
97
-1503="Открыть лицензию"
98
-1504="Language"
99
-1505="Блокировать спящий режим"
100
-1506="Подсказки"
101
-1507="Экспериментальные функции"
102
-1508="О системе"
103
-1509="Масштаб. интерфейса"
104
-1510="Горячие клавиши"
105
-1511="Настройки"
106
-1520="Сейчас"
107
-1521="Каждый день"
108
-1522="Каждую неделю"
109
-1523="Каждый год"
110
-1524="Никогда"
111
-1550="Никогда"
112
-1551="Всегда"
113
-1552="Во время воспроизведения"
114
-1553="В полноэкранном режиме"
115
-1354="Размер текста"
116
-1355="Параллакс"
117
-1356="Text parser"
118
-1357="Положение"
119
-1358="Сверху"
120
-1359="Снизу"
121
-1360="Plain text"
122
-1361="Lite HTML"
123
-1590="Мелко"
124
-1591="Нормально"
125
-1592="Крупно"
126
-1593="Форсировать HiDPI 2X"
127
-2000="Выберите видеофайл"
128
-2001="Выберите видеофайл с ЛЕВЫМ ракурсом"
129
-2002="Выберите видеофайл с ПРАВЫМ ракурсом"
130
-2003="Информация о файле"
131
-2004="Информация о файле недоступна"
132
-2005="Удаление файла"
133
-2006="Вы действительно хотите\n<b>удалить файл</b> минуя корзину?"
134
-2007="Активные декодеры:"
135
-2010="Выберите путь для сохранения картинки"
136
-2011="Ничего не открыто!"
137
-2012="Изображение недоступно для сохранения!"
138
-2013="Назначить новую комбинацию для\n<i>{0}</i>"
139
-2014="Конфликтует с: <i>{0}</i>"
140
-3000="sView - программа для воспроизведения видео"
141
-3001="версия"
142
-3002="Программа воспроизводит стереоскопическое видео.\n © {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nПрограмма распространяется на условиях GPL3.0"
143
-3003="Доступно обновление программы.\nВы можете загрузить новую версию с официального сайта www.sview.ru."
144
-3004="Информация о системе"
145
-4000="Закрыть"
146
-4001="Отменить"
147
-4005="Сбросить"
148
-4006="Сохранить"
149
-4007="Удалить"
150
-4008="По умолчанию"
151
-4009="Сбросить всё"
152
-4010="Установить"
153
-5000="[левый]"
154
-5001="[правый]"
155
-5002="Имена файлов"
156
-5003="Разрешение видео"
157
-5004="Время загрузки"
158
-5005="мс"
159
-5006="Пропорции пикселя"
160
-5007="Пиксельный формат"
161
-5008="(информация отсутствует в метаданных)"
162
-5009="(не соответствует метаданным)"
163
-5010="Продолжительность"
164
-5011="(информация отсутствует в метаданных,\nно была определена по имени файла)"
165
-5300="Заголовок"
166
-5301="Композитор"
167
-5302="Artist"
168
-5303="Album artist"
169
-5304="Альбом"
170
-5305="Диск"
171
-5306="Количество дисков"
172
-5307="Жанр"
173
-5308="Комментарий"
174
-5309="Примечания"
175
-5310="Описание"
176
-5311="Publisher"
177
-5312="Copyright"
178
-5313="Encoder"
179
-5314="Engineer"
180
-5315="Источник"
181
-5316="Дата создания"
182
-5317="Дата"
183
-5318="Год"
184
-5319="Язык"
185
-5320="Track"
186
-5321="Nb. of tracks"
187
-5322="Track gain"
188
-5323="Track peak"
189
-5324="Album gain"
190
-5325="Album peak"
191
-6000="Выход из программы"
192
-6001="Активирование полноэкранного режима"
193
-6002="Отображение FPS"
194
-6003="Стереоформат - Автоопределение"
195
-6004="Стереоформат - Моно"
196
-6005="Стереоформат - Вертикальная пара"
197
-6006="Стереоформат - Перекрёстная пара"
198
-6007="Информация о файле"
199
-6008="Список файлов - Перейти к первому элементу"
200
-6009="Список файлов - Перейти к последнему элементу"
201
-6010="Список файлов - Перейти к предыдущему элементу"
202
-6011="Список файлов - Перейти к следующему элементу"
203
-6012="Список файлов - Перейти к предыдущему элементу [2]"
204
-6013="Список файлов - Перейти к следующему элементу [2]"
205
-6014="Пауза/Воспроизведение"
206
-6015="Стоп"
207
-6016="Перемотать на 5 секунд назад"
208
-6017="Перемотать на 5 секунд вперёд"
209
-6018="Открыть файл"
210
-6019="Сохранить кадр"
211
-6020="Удалить файл из файловой системы"
212
-6021="Заглушить звук"
213
-6022="Понизить громкость звука"
214
-6023="Повысить громкость звука"
215
-6024="Предыдущая аудиодорожка"
216
-6025="Следующая аудиодорожка"
217
-6026="Предыдущие субтитры"
218
-6027="Следующие субтитры"
219
-6028="Скопировать текст субтитров в буфер обмена"
220
-6029="Открыть путь из буфера обмена"
221
-6030="Отобразить/Скрыть список файлов"
222
-6031="Сбросить настройки цвета"
223
-6032="Сбросить позицию картинки"
224
-6033="Реверс ракурсов"
225
-6034="Гамма коррекция - понизить коэффициент"
226
-6035="Гамма коррекция - повысить коэффициент"
227
-6036="DX разделение ракурсов - уменьшить"
228
-6037="DX разделение ракурсов - увеличить"
229
-6038="DY разделение ракурсов - уменьшить"
230
-6039="DY разделение ракурсов - увеличить"
231
-6040="Угловое разделение ракурсов - уменьшить"
232
-6041="Угловое разделение ракурсов - увеличить"
233
-6042="Поворот на 90 градусов против часовой стрелки"
234
-6043="Поворот на 90 градусов по часовой стрелке"
235
-6044="Поворот против часовой стрелки"
236
-6045="Поворот по часовой стрелке"
237
-6046="Включить/выключить панорамный режим"
238
-6047="Паннинг - движение налево"
239
-6048="Паннинг - движение направо"
240
-6049="Паннинг - движение наверх"
241
-6050="Паннинг - движение вниз"
242
-6051="Масштабирование - увеличить"
243
-6052="Масштабирование - уменьшить"
244
-6053="Y наклон - налево"
245
-6054="Y наклон - направо"
246
-6055="X наклон - наверх"
247
-6056="X наклон - вниз"
248
-6057="Включить/выключить панорамный режим"
249
+1002=Поменять ракурсы местами
250
+1003=Отключить реверс ракурсов
251
+1004=Исходный стереоформат:
252
+1015=Открыть видеофайл
253
+1020=Пауза/Воспроизведение
254
+1021=Отобразить/Скрыть\nсписок файлов
255
+1022=Предыдущий файл
256
+1023=Следующий файл
257
+1029=Оконный/Полноэкранный\nрежим просмотра
258
+1100=Медиа
259
+1101=Открыть видео...
260
+1102=Сохранить кадр...
261
+1103=Исходный стереоформат
262
+1170=Информация о файле
263
+1104=Аудио устройство
264
+1105=Случайный порядок
265
+1106=Последние файлы
266
+1107=Декодирование видео на GPU
267
+1108=Web UI
268
+1109=Выход
269
+1110=Из одного файла
270
+1111=Левый+Правый файлы
271
+1130=Исходный
272
+1131=Моно
273
+1132=Перекрёстная пара
274
+1133=Параллельная пара
275
+1134=Вертикальная пара (П/Л)
276
+1135=Вертикальная пара (Л/П)
277
+1136=Чересстрочный
278
+1137=Анаглиф (Красно-Голубой)
279
+1138=Анаглиф (Пурпурный)
280
+1139=Анаглиф (Жёлтый)
281
+1140=Чередование кадров
282
+1141=2x720p in 1080p tiled
283
+1142=2 потока
284
+1160=Очистить историю
285
+1180=Отключить
286
+1181=Запустить один раз
287
+1182=Запускать при старте
288
+1185=Показывать ошибки
289
+1186=Web-интерфейс не может быть запущен на порте {0}!
290
+1200=Вид
291
+1201=Вывод стерео
292
+1202=Полный экран
293
+1203=Сбросить
294
+1204=Реверс ракурсов
295
+1205=Соотношение сторон
296
+1206=Сглаживание текстур
297
+1207=Цветокоррекция
298
+1208=Панорама
299
+1210=Стерео
300
+1211=Левый ракурс
301
+1212=Правый ракурс
302
+1213=Параллельная пара
303
+1214=Перекрёстная пара
304
+1140=Чередование кадров
305
+1250=Исходное
306
+1251=Запомнить
307
+?1252=Heal anamorphic 1080p/720p
308
+1260=Без сглаживания
309
+1261=Линейное
310
+1262=Blend Deinterlace
311
+1270=Сбросить настройки
312
+1271=Яркость
313
+1272=Насыщенность
314
+1273=Гамма
315
+1280=Плоскость
316
+1281=Сфера
317
+1282=Цилиндр
318
+1283=Куб
319
+1285=Отслеживать ориентацию
320
+1286=Отслеживать ориентацию (poor)
321
+1300=Аудио
322
+1301=Без звука
323
+1302=Задержка звука
324
+1303=Добавить дорожку из файла
325
+1320=Синхронизация видео со звуком
326
+1321=Введите положительное значение, если звук опережает видео, и отрицательное в противном случае.
327
+1322=Задержка звука:
328
+1323=секунд
329
+1350=Субтитры
330
+1351=Без титров
331
+1353=Добавить файл
332
+1400=Выбрать устройство
333
+1401=О модуле...
334
+1402=FPS Control
335
+1420=Верт. синхронизация
336
+1421=Отображать FPS
337
+1422=Ограничить использование CPU
338
+1500=Помощь
339
+1501=О программе...
340
+1502=Проверить обновления
341
+1503=Открыть лицензию
342
+1504=Language
343
+1505=Блокировать спящий режим
344
+1506=Подсказки
345
+1507=Экспериментальные функции
346
+1508=О системе
347
+1509=Масштаб. интерфейса
348
+1510=Горячие клавиши
349
+1511=Настройки
350
+1520=Сейчас
351
+1521=Каждый день
352
+1522=Каждую неделю
353
+1523=Каждый год
354
+1524=Никогда
355
+1550=Никогда
356
+1551=Всегда
357
+1552=Во время воспроизведения
358
+1553=В полноэкранном режиме
359
+1354=Размер текста
360
+1355=Параллакс
361
+1356=Text parser
362
+1357=Положение
363
+1358=Сверху
364
+1359=Снизу
365
+1360=Plain text
366
+1361=Lite HTML
367
+1590=Мелко
368
+1591=Нормально
369
+1592=Крупно
370
+1593=Форсировать HiDPI 2X
371
+2000=Выберите видеофайл
372
+2001=Выберите видеофайл с ЛЕВЫМ ракурсом
373
+2002=Выберите видеофайл с ПРАВЫМ ракурсом
374
+2003=Информация о файле
375
+2004=Информация о файле недоступна
376
+2005=Удаление файла
377
+2006=Вы действительно хотите\n<b>удалить файл</b> минуя корзину?
378
+2007=Активные декодеры:
379
+2010=Выберите путь для сохранения картинки
380
+2011=Ничего не открыто!
381
+2012=Изображение недоступно для сохранения!
382
+2013=Назначить новую комбинацию для\n<i>{0}</i>
383
+2014=Конфликтует с: <i>{0}</i>
384
+3000=sView - программа для воспроизведения видео
385
+3001=версия
386
+3002=Программа воспроизводит стереоскопическое видео.\n © {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nПрограмма распространяется на условиях GPL3.0
387
+3003=Доступно обновление программы.\nВы можете загрузить новую версию с официального сайта www.sview.ru.
388
+3004=Информация о системе
389
+4000=Закрыть
390
+4001=Отменить
391
+4005=Сбросить
392
+4006=Сохранить
393
+4007=Удалить
394
+4008=По умолчанию
395
+4009=Сбросить всё
396
+4010=Установить
397
+5000=[левый]
398
+5001=[правый]
399
+5002=Имена файлов
400
+5003=Разрешение видео
401
+5004=Время загрузки
402
+5005=мс
403
+5006=Пропорции пикселя
404
+5007=Пиксельный формат
405
+5008=(информация отсутствует в метаданных)
406
+5009=(не соответствует метаданным)
407
+5010=Продолжительность
408
+5011=(информация отсутствует в метаданных,\nно была определена по имени файла)
409
+5300=Заголовок
410
+5301=Композитор
411
+5302=Artist
412
+5303=Album artist
413
+5304=Альбом
414
+5305=Диск
415
+5306=Количество дисков
416
+5307=Жанр
417
+5308=Комментарий
418
+5309=Примечания
419
+5310=Описание
420
+5311=Publisher
421
+5312=Copyright
422
+5313=Encoder
423
+5314=Engineer
424
+5315=Источник
425
+5316=Дата создания
426
+5317=Дата
427
+5318=Год
428
+5319=Язык
429
+5320=Track
430
+5321=Nb. of tracks
431
+5322=Track gain
432
+5323=Track peak
433
+5324=Album gain
434
+5325=Album peak
435
+6000=Выход из программы
436
+6001=Активирование полноэкранного режима
437
+6002=Отображение FPS
438
+6003=Стереоформат - Автоопределение
439
+6004=Стереоформат - Моно
440
+6005=Стереоформат - Вертикальная пара
441
+6006=Стереоформат - Перекрёстная пара
442
+6007=Информация о файле
443
+6008=Список файлов - Перейти к первому элементу
444
+6009=Список файлов - Перейти к последнему элементу
445
+6010=Список файлов - Перейти к предыдущему элементу
446
+6011=Список файлов - Перейти к следующему элементу
447
+6012=Список файлов - Перейти к предыдущему элементу [2]
448
+6013=Список файлов - Перейти к следующему элементу [2]
449
+6014=Пауза/Воспроизведение
450
+6015=Стоп
451
+6016=Перемотать на 5 секунд назад
452
+6017=Перемотать на 5 секунд вперёд
453
+6018=Открыть файл
454
+6019=Сохранить кадр
455
+6020=Удалить файл из файловой системы
456
+6021=Заглушить звук
457
+6022=Понизить громкость звука
458
+6023=Повысить громкость звука
459
+6024=Предыдущая аудиодорожка
460
+6025=Следующая аудиодорожка
461
+6026=Предыдущие субтитры
462
+6027=Следующие субтитры
463
+6028=Скопировать текст субтитров в буфер обмена
464
+6029=Открыть путь из буфера обмена
465
+6030=Отобразить/Скрыть список файлов
466
+6031=Сбросить настройки цвета
467
+6032=Сбросить позицию картинки
468
+6033=Реверс ракурсов
469
+6034=Гамма коррекция - понизить коэффициент
470
+6035=Гамма коррекция - повысить коэффициент
471
+6036=DX разделение ракурсов - уменьшить
472
+6037=DX разделение ракурсов - увеличить
473
+6038=DY разделение ракурсов - уменьшить
474
+6039=DY разделение ракурсов - увеличить
475
+6040=Угловое разделение ракурсов - уменьшить
476
+6041=Угловое разделение ракурсов - увеличить
477
+6042=Поворот на 90 градусов против часовой стрелки
478
+6043=Поворот на 90 градусов по часовой стрелке
479
+6044=Поворот против часовой стрелки
480
+6045=Поворот по часовой стрелке
481
+6046=Включить/выключить панорамный режим
482
+6047=Паннинг - движение налево
483
+6048=Паннинг - движение направо
484
+6049=Паннинг - движение наверх
485
+6050=Паннинг - движение вниз
486
+6051=Масштабирование - увеличить
487
+6052=Масштабирование - уменьшить
488
+6053=Y наклон - налево
489
+6054=Y наклон - направо
490
+6055=X наклон - наверх
491
+6056=X наклон - вниз
492
+6057=Включить/выключить панорамный режим
493
sview-15_10.tar.gz/StOutAnaglyph/StOutAnaglyph.cbp -> sview-15_11.tar.gz/StOutAnaglyph/StOutAnaglyph.cbp Changed
59
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StOutAnaglyph" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Version" />
27
-               </Linker>
28
-               <ExtraCommands>
29
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
30
-               </ExtraCommands>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StOutAnaglyph" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
34
                <Option object_output="obj/$(TARGET_NAME)/" />
35
@@ -64,11 +37,11 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StOutAnaglyph" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="3" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option createStaticLib="1" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -254,8 +227,7 @@
50
            <Option compilerVar="WINDRES" />
51
            <Option target="WIN_vc_x86" />
52
            <Option target="WIN_vc_AMD64" />
53
-           <Option target="WIN_gcc_x86" />
54
-           <Option target="WIN_vc_x86_DEBUG" />
55
+           <Option target="WIN_vc_AMD64_DEBUG" />
56
        </Unit>
57
        <Unit filename="lang/chinese/language.lng">
58
            <Option target="&lt;{~None~}&gt;" />
59
sview-15_10.tar.gz/StOutAnaglyph/StOutAnaglyph.cpp -> sview-15_11.tar.gz/StOutAnaglyph/StOutAnaglyph.cpp Changed
36
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutAnaglyph, class providing stereoscopic output in Anaglyph format using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutAnaglyph library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutAnaglyph.h"
25
@@ -201,7 +192,9 @@
26
 }
27
 
28
 void StOutAnaglyph::beforeClose() {
29
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
30
+    if(isMovable() && myWasUsed) {
31
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
32
+    }
33
     mySettings->saveParam(ST_SETTING_GLASSES,   params.Glasses);
34
     mySettings->saveParam(ST_SETTING_REDCYAN,   params.RedCyan);
35
     mySettings->saveParam(ST_SETTING_AMBERBLUE, params.AmberBlue);
36
sview-15_10.tar.gz/StOutAnaglyph/StOutAnaglyph.h -> sview-15_11.tar.gz/StOutAnaglyph/StOutAnaglyph.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutAnaglyph, class providing stereoscopic output in Anaglyph format using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutAnaglyph library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutAnaglyph_h_
25
sview-15_10.tar.gz/StOutAnaglyph/lang/chinese/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/chinese/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # Chinese translation file for StOutAnaglyph library
3
 # @author YSC
4
 --------
5
-1000="分色眼镜"
6
-1001="滤色简单眼镜. 通用"
7
-1010="眼镜类型"
8
-1011="红-青"
9
-1012="黄-蓝"
10
-1013="绿-洋红"
11
-1102="红-青 滤镜"
12
-1120="单画面"
13
-1121="调节"
14
-1122="变灰"
15
-1123="黑"
16
-1103="黄-蓝 滤镜"
17
-1130="单画面"
18
-1131="Dubios"
19
-2000="sView - 分色输出模块"
20
-2001="版本"
21
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
22
+1000=分色眼镜
23
+1001=滤色简单眼镜. 通用
24
+1010=眼镜类型
25
+1011=红-青
26
+1012=黄-蓝
27
+1013=绿-洋红
28
+1102=红-青 滤镜
29
+1120=单画面
30
+1121=调节
31
+1122=变灰
32
+1123=黑
33
+1103=黄-蓝 滤镜
34
+1130=单画面
35
+1131=Dubios
36
+2000=sView - 分色输出模块
37
+2001=版本
38
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/lang/czech/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/czech/StOutAnaglyph.lng Changed
7
 
1
@@ -18,4 +18,4 @@
2
 1131=Dubios
3
 2000=sView - modul pro výstup anaglyf
4
 2001=verze
5
-2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0
6
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
7
sview-15_10.tar.gz/StOutAnaglyph/lang/english/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/english/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # English translation file for StOutAnaglyph library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Anaglyph glasses"
6
-1001="Simple glasses with color-filters. Commonly used"
7
-1010="Glasses type"
8
-1011="Red-Cyan (R+GB)"
9
-1012="Yellow-Blue (RG+B)"
10
-1013="Green-Magenta (G+RB)"
11
-1102="Red-Cyan filter"
12
-1120="Simple"
13
-1121="Optimized"
14
-1122="Grayed"
15
-1123="Dark"
16
-1103="Yellow-Blue filter"
17
-1130="Simple"
18
-1131="Dubios"
19
-2000="sView - Anaglyph Output module"
20
-2001="version"
21
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
22
+1000=Anaglyph glasses
23
+1001=Simple glasses with color-filters. Commonly used
24
+1010=Glasses type
25
+1011=Red-Cyan (R+GB)
26
+1012=Yellow-Blue (RG+B)
27
+1013=Green-Magenta (G+RB)
28
+1102=Red-Cyan filter
29
+1120=Simple
30
+1121=Optimized
31
+1122=Grayed
32
+1123=Dark
33
+1103=Yellow-Blue filter
34
+1130=Simple
35
+1131=Dubios
36
+2000=sView - Anaglyph Output module
37
+2001=version
38
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/lang/french/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/french/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # French translation file for StOutAnaglyph library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Lunettes Anaglyphes"
6
-1001="Simples Lunettes avec filtre couleur. Couramment utilisées"
7
-1010="Type de verre"
8
-1011="Rouge-Bleue (R+B)"
9
-1012="Jaune-Bleue (RV+B)"
10
-1013="Vert-Magenta (V+RB)"
11
-1102="Filtre Rouge-Bleu"
12
-1120="Simple"
13
-1121="Optimisé"
14
-1122="Gris"
15
-1123="Foncé"
16
-1103="Filtre Jaune-Bleue"
17
-1130="Simple"
18
-1131="Dubios"
19
-2000="sView - Anaglyph Output module"
20
-2001="version"
21
-2002="© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis library is distributed under LGPL3.0"
22
+1000=Lunettes Anaglyphes
23
+1001=Simples Lunettes avec filtre couleur. Couramment utilisées
24
+1010=Type de verre
25
+1011=Rouge-Bleue (R+B)
26
+1012=Jaune-Bleue (RV+B)
27
+1013=Vert-Magenta (V+RB)
28
+1102=Filtre Rouge-Bleu
29
+1120=Simple
30
+1121=Optimisé
31
+1122=Gris
32
+1123=Foncé
33
+1103=Filtre Jaune-Bleue
34
+1130=Simple
35
+1131=Dubios
36
+2000=sView - Anaglyph Output module
37
+2001=version
38
+2002=© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/lang/german/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/german/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # German translation file for StOutAnaglyph library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Anaglyphenbrillen"
6
-1001="Simple glasses with color-filters. Commonly used"
7
-1010="Brillenartiger"
8
-1011="Rot-Cyan (R+GB)"
9
-1012="Gelb-Blau (RG+B)"
10
-1013="Green-Magenta (G+RB)"
11
-1102="Rot-Cyan Filter"
12
-1120="Einfach"
13
-1121="Optimiert"
14
-1122="Grayed"
15
-1123="Dunkel"
16
-1103="Gelb-Blau Filter"
17
-1130="Einfach"
18
-1131="Dubios"
19
-2000="sView - Anaglyph Ausgangsmodul"
20
-2001="Version"
21
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
22
+1000=Anaglyphenbrillen
23
+1001=Simple glasses with color-filters. Commonly used
24
+1010=Brillenartiger
25
+1011=Rot-Cyan (R+GB)
26
+1012=Gelb-Blau (RG+B)
27
+1013=Green-Magenta (G+RB)
28
+1102=Rot-Cyan Filter
29
+1120=Einfach
30
+1121=Optimiert
31
+1122=Grayed
32
+1123=Dunkel
33
+1103=Gelb-Blau Filter
34
+1130=Einfach
35
+1131=Dubios
36
+2000=sView - Anaglyph Ausgangsmodul
37
+2001=Version
38
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/lang/korean/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/korean/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # English translation file for StOutAnaglyph library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="Anaglyph glasses"
6
-?1001="Simple glasses with color-filters. Commonly used"
7
-?1010="Glasses type"
8
-?1011="Red-Cyan (R+GB)"
9
-?1012="Yellow-Blue (RG+B)"
10
-?1013="Green-Magenta (G+RB)"
11
-?1102="Red-Cyan filter"
12
-?1120="Simple"
13
-?1121="Optimized"
14
-?1122="Grayed"
15
-?1123="Dark"
16
-?1103="Yellow-Blue filter"
17
-?1130="Simple"
18
-?1131="Dubios"
19
-?2000="sView - Anaglyph Output module"
20
-?2001="version"
21
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
22
+?1000=Anaglyph glasses
23
+?1001=Simple glasses with color-filters. Commonly used
24
+?1010=Glasses type
25
+?1011=Red-Cyan (R+GB)
26
+?1012=Yellow-Blue (RG+B)
27
+?1013=Green-Magenta (G+RB)
28
+?1102=Red-Cyan filter
29
+?1120=Simple
30
+?1121=Optimized
31
+?1122=Grayed
32
+?1123=Dark
33
+?1103=Yellow-Blue filter
34
+?1130=Simple
35
+?1131=Dubios
36
+?2000=sView - Anaglyph Output module
37
+?2001=version
38
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/lang/russian/StOutAnaglyph.lng -> sview-15_11.tar.gz/StOutAnaglyph/lang/russian/StOutAnaglyph.lng Changed
39
 
1
@@ -1,20 +1,20 @@
2
 # Russian translation file for StOutAnaglyph library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Анаглифные очки"
6
-1001="Очки с цветовыми фильтрами"
7
-1010="Тип очков"
8
-1011="Красно-голубые"
9
-1012="Жёлто-Синие"
10
-1013="Зелёно-Пурпурные"
11
-1102="Красно-голубой фильтр"
12
-1120="Простой"
13
-1121="Оптимизированный"
14
-1122="Серый"
15
-1123="Тёмный"
16
-1103="Жёлто-Синий фильтр"
17
-1130="Простой"
18
-1131="Dubios"
19
-2000="sView - модуль вывода для Анаглифных очков"
20
-2001="версия"
21
-2002="© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0"
22
+1000=Анаглифные очки
23
+1001=Очки с цветовыми фильтрами
24
+1010=Тип очков
25
+1011=Красно-голубые
26
+1012=Жёлто-Синие
27
+1013=Зелёно-Пурпурные
28
+1102=Красно-голубой фильтр
29
+1120=Простой
30
+1121=Оптимизированный
31
+1122=Серый
32
+1123=Тёмный
33
+1103=Жёлто-Синий фильтр
34
+1130=Простой
35
+1131=Dubios
36
+2000=sView - модуль вывода для Анаглифных очков
37
+2001=версия
38
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
39
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphGray.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphGray.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Gray Anaglyph fragment shader.
3
  * Copyright © 2007-2011 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 /**
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphGreen.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphGreen.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Simple Green-Magenta Anaglyphs fragment shader.
3
  * Copyright © 2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform sampler2D texL, texR;
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphOptim.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphOptim.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Optimized Anaglyphs (StereoVision) fragment shader.
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 // http://research.csc.ncsu.edu/stereographics/LS.pdf
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphSimple.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphSimple.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Simple Anaglyphs fragment shader.
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform sampler2D texL, texR;
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphTrue.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphTrue.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * True (dark) Anaglyph fragment shader.
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 /**
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphYellow.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphYellow.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Simple Yellow Anaglyphs fragment shader.
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform sampler2D texL, texR;
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/fAnaglyphYellowDubois.shf -> sview-15_11.tar.gz/StOutAnaglyph/shaders/fAnaglyphYellowDubois.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * Dubois amber blue anaglyph fragment shader.
3
  * Copyright © 2012 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 /**
24
sview-15_10.tar.gz/StOutAnaglyph/shaders/vAnaglyph.shv -> sview-15_11.tar.gz/StOutAnaglyph/shaders/vAnaglyph.shv Changed
24
 
1
@@ -1,19 +1,9 @@
2
 /**
3
  * Copyright © 2009-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutAnaglyph library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutAnaglyph library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 // per-vertex input
24
sview-15_10.tar.gz/StOutDistorted/StOutDistorted.cbp -> sview-15_11.tar.gz/StOutDistorted/StOutDistorted.cbp Changed
60
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStOutDistorted" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Version" />
27
-               </Linker>
28
-               <ExtraCommands>
29
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
30
-               </ExtraCommands>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StOutDistorted" prefix_auto="1" extension_auto="1" />
34
                <Option object_output="obj/$(TARGET_NAME)/" />
35
@@ -64,11 +37,11 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StOutDistorted" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="3" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option createStaticLib="1" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -249,9 +222,8 @@
50
        <Unit filename="StOutDistorted.cpp" />
51
        <Unit filename="StOutDistorted.h" />
52
        <Unit filename="StOutDistorted.rc">
53
-           <Option target="WIN_gcc_x86" />
54
            <Option target="WIN_vc_x86" />
55
-           <Option target="WIN_vc_x86_DEBUG" />
56
+           <Option target="WIN_vc_AMD64_DEBUG" />
57
            <Option target="WIN_vc_AMD64" />
58
        </Unit>
59
        <Unit filename="lang/chinese/language.lng">
60
sview-15_10.tar.gz/StOutDistorted/StOutDistorted.cpp -> sview-15_11.tar.gz/StOutDistorted/StOutDistorted.cpp Changed
691
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutDistorted, class providing stereoscopic output in anamorph side by side format using StCore toolkit.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutDual library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutDual library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutDistorted.h"
25
@@ -22,6 +13,7 @@
26
 #include <StGL/StGLEnums.h>
27
 #include <StGL/StGLProgram.h>
28
 #include <StGL/StGLFrameBuffer.h>
29
+#include <StGL/StGLArbFbo.h>
30
 #include <StGLCore/StGLCore20.h>
31
 #include <StSettings/StSettings.h>
32
 #include <StSettings/StTranslations.h>
33
@@ -33,25 +25,10 @@
34
 #ifdef ST_HAVE_LIBOVR
35
 
36
 #include <OVR.h>
37
-//#include <OVR_CAPI_GL.h> // broken SDK
38
-#include <../Src/OVR_CAPI_GL.h>
39
+#include <OVR_CAPI_GL.h>
40
 
41
 #ifdef _MSC_VER
42
-    #ifdef _DEBUG
43
-        #if defined(_WIN64) || defined(__WIN64__)
44
-            #pragma comment(lib, "libovr64d.lib")
45
-        #else
46
-            #pragma comment(lib, "libovrd.lib")
47
-        #endif
48
-    #else
49
-        #if defined(_WIN64) || defined(__WIN64__)
50
-            #pragma comment(lib, "libovr64.lib")
51
-        #else
52
-            #pragma comment(lib, "libovr.lib")
53
-        #endif
54
-    #endif
55
-    #pragma comment(lib, "Winmm.lib")
56
-    #pragma comment(lib, "Ws2_32.lib") // requires Windows Vista+
57
+    #pragma comment(lib, "LibOVR.lib")
58
 #endif
59
 
60
 #endif
61
@@ -63,7 +40,6 @@
62
     static const char ST_SETTING_DEVICE_ID[] = "deviceId";
63
     static const char ST_SETTING_WINDOWPOS[] = "windowPos";
64
     static const char ST_SETTING_LAYOUT[]    = "layout";
65
-    static const char ST_SETTING_ANAMORPH[]  = "anamorph";
66
     static const char ST_SETTING_MONOCLONE[] = "monoClone";
67
     static const char ST_SETTING_MARGINS[]   = "margins";
68
     static const char ST_SETTING_WARP_COEF[] = "warpCoef";
69
@@ -80,6 +56,8 @@
70
         STTR_PARAMETER_LAYOUT     = 1110,
71
         STTR_PARAMETER_LAYOUT_SBS        = 1111,
72
         STTR_PARAMETER_LAYOUT_OVERUNDER  = 1112,
73
+        STTR_PARAMETER_LAYOUT_SBS_ANAMORPH = 1113,
74
+        STTR_PARAMETER_LAYOUT_OVERUNDER_ANAMORPH = 1114,
75
         STTR_PARAMETER_DISTORTION = 1120,
76
         STTR_PARAMETER_DISTORTION_OFF    = 1121,
77
         STTR_PARAMETER_MONOCLONE         = 1123,
78
@@ -312,7 +290,6 @@
79
 void StOutDistorted::getOptions(StParamsList& theList) const {
80
     if(myDevice != DEVICE_OCULUS) {
81
         theList.add(params.Layout);
82
-        theList.add(params.Anamorph);
83
     }
84
     theList.add(params.MonoClone);
85
 }
86
@@ -332,16 +309,23 @@
87
   myChromAb(0.996f, -0.004f, 1.014f, 0.0f),
88
   //myChromAb(1.0f, 0.0f, 1.0f, 0.0f),
89
   myOvrHmd(NULL),
90
+  myOvrSizeX(0),
91
+  myOvrSizeY(0),
92
+#ifdef ST_HAVE_LIBOVR
93
+  myOvrSwapTexture(NULL),
94
+  myOvrMirrorTexture(NULL),
95
+  myOvrMirrorFbo(0),
96
+#endif
97
   myToReduceGui(false),
98
   myToShowCursor(true),
99
   myToCompressMem(myInstancesNb.increment() > 1),
100
   myIsBroken(false),
101
-  myIsStereoOn(false) {
102
-
103
+  myIsStereoOn(false),
104
+  myIsHdmiPack(false) {
105
 #ifdef ST_HAVE_LIBOVR
106
-    ovr_Initialize();
107
+    myOvrSwapFbo[0] = 0;
108
+    myOvrSwapFbo[1] = 0;
109
 #endif
110
-
111
     const StSearchMonitors& aMonitors = StWindow::getMonitors();
112
     StTranslations aLangMap(getResourceManager(), ST_OUT_PLUGIN_NAME);
113
 
114
@@ -354,21 +338,40 @@
115
             + aDescr.format("2013-2015", "kirill@sview.ru", "www.sview.ru");
116
 
117
     // detect connected displays
118
-    int aSupportLevel = ST_DEVICE_SUPPORT_NONE;
119
+    int aSupportOculus   = ST_DEVICE_SUPPORT_NONE;
120
+    int aSupportParallel = ST_DEVICE_SUPPORT_NONE;
121
+    bool isHdmiPack = false;
122
     for(size_t aMonIter = 0; aMonIter < aMonitors.size(); ++aMonIter) {
123
         const StMonitor& aMon = aMonitors[aMonIter];
124
         if(aMon.getPnPId().isStartsWith(stCString("OVR"))) {
125
             // Oculus Rift
126
-            aSupportLevel = ST_DEVICE_SUPPORT_HIGHT;
127
+            aSupportOculus = ST_DEVICE_SUPPORT_HIGHT;
128
             break;
129
+        } else if(aMon.getVRect().width()  == 1920
130
+               && aMon.getVRect().height() == 2205) {
131
+            aSupportParallel = ST_DEVICE_SUPPORT_HIGHT;
132
+            isHdmiPack = true;
133
+        } else if(aMon.getVRect().width()  == 1280
134
+               && aMon.getVRect().height() == 1470) {
135
+            aSupportParallel = ST_DEVICE_SUPPORT_HIGHT;
136
+            isHdmiPack = true;
137
         }
138
     }
139
 
140
+#ifdef ST_HAVE_LIBOVR
141
+    const ovrResult anOvrRes = ovr_Initialize(NULL);
142
+    if(!OVR_SUCCESS(anOvrRes)) {
143
+        ST_ERROR_LOG("StOutDistorted, OVR initialization has failed!");
144
+    } else {
145
+        aSupportOculus = ST_DEVICE_SUPPORT_HIGHT;
146
+    }
147
+#endif
148
+
149
     // devices list
150
     StHandle<StOutDevice> aDevDistorted = new StOutDevice();
151
     aDevDistorted->PluginId = ST_OUT_PLUGIN_NAME;
152
     aDevDistorted->DeviceId = "Distorted";
153
-    aDevDistorted->Priority = ST_DEVICE_SUPPORT_NONE;
154
+    aDevDistorted->Priority = aSupportParallel;
155
     aDevDistorted->Name     = aLangMap.changeValueId(STTR_DISTORTED_NAME, "TV (parallel pair)");
156
     aDevDistorted->Desc     = aLangMap.changeValueId(STTR_DISTORTED_DESC, "Distorted Output");
157
     myDevices.add(aDevDistorted);
158
@@ -376,7 +379,7 @@
159
     StHandle<StOutDevice> aDevOculus = new StOutDevice();
160
     aDevOculus->PluginId = ST_OUT_PLUGIN_NAME;
161
     aDevOculus->DeviceId = "Oculus";
162
-    aDevOculus->Priority = aSupportLevel;
163
+    aDevOculus->Priority = aSupportOculus;
164
     aDevOculus->Name     = aLangMap.changeValueId(STTR_OCULUS_NAME, "Oculus Rift");
165
     aDevOculus->Desc     = aLangMap.changeValueId(STTR_OCULUS_DESC, "Distorted Output");
166
     myDevices.add(aDevOculus);
167
@@ -388,16 +391,16 @@
168
     }
169
 
170
     // Distortion parameters
171
-    params.Anamorph = new StBoolParamNamed(false, "Anamorph");
172
-    mySettings->loadParam(ST_SETTING_ANAMORPH, params.Anamorph);
173
     params.MonoClone = new StBoolParamNamed(false, aLangMap.changeValueId(STTR_PARAMETER_MONOCLONE, "Show Mono in Stereo"));
174
     mySettings->loadParam(ST_SETTING_MONOCLONE, params.MonoClone);
175
 
176
     // Layout option
177
-    StHandle<StEnumParam> aLayoutParam = new StEnumParam(LAYOUT_SIDE_BY_SIDE,
178
+    StHandle<StEnumParam> aLayoutParam = new StEnumParam(isHdmiPack ? LAYOUT_OVER_UNDER : LAYOUT_SIDE_BY_SIDE_ANAMORPH,
179
                                                          aLangMap.changeValueId(STTR_PARAMETER_LAYOUT, "Layout"));
180
-    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_SBS,       "Side-by-Side"));
181
-    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_OVERUNDER, "Top-and-Bottom"));
182
+    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_SBS_ANAMORPH,       "Side-by-Side (Anamorph)"));
183
+    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_OVERUNDER_ANAMORPH, "Top-and-Bottom (Anamorph)"));
184
+    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_SBS,                "Side-by-Side"));
185
+    aLayoutParam->changeValues().add(aLangMap.changeValueId(STTR_PARAMETER_LAYOUT_OVERUNDER,          "Top-and-Bottom") + (isHdmiPack ? " [HDMI]" : ""));
186
     params.Layout = aLayoutParam;
187
     mySettings->loadParam(ST_SETTING_LAYOUT, params.Layout);
188
 
189
@@ -409,6 +412,7 @@
190
         }
191
         StWindow::setPlacement(aRect, true);
192
     }
193
+    checkHdmiPack();
194
     StWindow::setTitle("sView - Distorted Renderer");
195
 
196
     StRectI_t aMargins;
197
@@ -428,6 +432,30 @@
198
 
199
 void StOutDistorted::releaseResources() {
200
     if(!myContext.isNull()) {
201
+    #ifdef ST_HAVE_LIBOVR
202
+        if(myOvrSwapFbo[0] != 0) {
203
+            myContext->arbFbo->glDeleteFramebuffers(2, myOvrSwapFbo);
204
+            myOvrSwapFbo[0] = 0;
205
+            myOvrSwapFbo[1] = 0;
206
+        }
207
+        if(myOvrSwapTexture != NULL) {
208
+            ovr_DestroySwapTextureSet(myOvrHmd, myOvrSwapTexture);
209
+            myOvrSwapTexture = NULL;
210
+        }
211
+        if(myOvrMirrorFbo != 0) {
212
+            myContext->arbFbo->glDeleteFramebuffers(1, &myOvrMirrorFbo);
213
+            myOvrMirrorFbo = NULL;
214
+        }
215
+        if(myOvrMirrorTexture != NULL) {
216
+            ovr_DestroyMirrorTexture(myOvrHmd, &myOvrMirrorTexture->Texture);
217
+            myOvrMirrorTexture = NULL;
218
+        }
219
+        if(myOvrHmd != NULL) {
220
+            ovr_Destroy(myOvrHmd);
221
+            myOvrHmd = NULL;
222
+        }
223
+    #endif
224
+
225
         myProgramFlat->release(*myContext);
226
         myProgramBarrel->release(*myContext);
227
         myFrVertsBuf .release(*myContext);
228
@@ -447,7 +475,9 @@
229
 }
230
 
231
 void StOutDistorted::beforeClose() {
232
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
233
+    if(isMovable() && myWasUsed) {
234
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
235
+    }
236
 
237
     StRectI_t aMargins;
238
     aMargins.left()   = myBarMargins.left;
239
@@ -456,7 +486,6 @@
240
     aMargins.bottom() = myBarMargins.bottom;
241
 
242
     mySettings->saveParam(ST_SETTING_LAYOUT,     params.Layout);
243
-    mySettings->saveParam(ST_SETTING_ANAMORPH,   params.Anamorph);
244
     mySettings->saveParam(ST_SETTING_MONOCLONE,  params.MonoClone);
245
     mySettings->saveInt32Rect(ST_SETTING_MARGINS,   aMargins);
246
     mySettings->saveFloatVec4(ST_SETTING_WARP_COEF, myBarrelCoef);
247
@@ -478,14 +507,6 @@
248
 
249
 void StOutDistorted::close() {
250
     beforeClose();
251
-
252
-#ifdef ST_HAVE_LIBOVR
253
-    if(myOvrHmd != NULL) {
254
-        ovrHmd_Destroy(myOvrHmd);
255
-        myOvrHmd = NULL;
256
-    }
257
-#endif
258
-
259
     StWindow::params.VSyncMode->signals.onChanged -= stSlot(this, &StOutDistorted::doSwitchVSync);
260
     myToResetDevice = false;
261
     releaseResources();
262
@@ -501,6 +522,7 @@
263
     // initialize GL context
264
     myContext = StWindow::getContext();
265
     myContext->setMessagesQueue(myMsgQueue);
266
+    myIsBroken = false;
267
     if(!myContext->isGlGreaterEqual(2, 0)) {
268
         myMsgQueue->pushError(stCString("OpenGL 2.0 is required by Distorted Output"));
269
         myIsBroken = true;
270
@@ -558,65 +580,66 @@
271
 
272
 #ifdef ST_HAVE_LIBOVR
273
     if(myDevice == DEVICE_OCULUS) {
274
-        myOvrHmd = ovrHmd_Create(0);
275
-        if(myOvrHmd == NULL) {
276
-            myMsgQueue->pushError(stCString("Oculus Rift is not connected!"));
277
-            myOvrHmd = ovrHmd_CreateDebug(ovrHmd_DK1);
278
-            //myOvrHmd = ovrHmd_CreateDebug(ovrHmd_DK2);
279
-            if(myOvrHmd == NULL) {
280
-                myMsgQueue->pushError(stCString("Can not create debug libOVR device!"));
281
-            }
282
+        ovrGraphicsLuid aLuid;
283
+        const ovrResult anOvrRes = ovr_Create(&myOvrHmd, &aLuid);
284
+        if(myOvrHmd == NULL
285
+        || !OVR_SUCCESS(anOvrRes)) {
286
+            myMsgQueue->pushError(stCString("StOutDistorted, Oculus Rift is not connected!"));
287
+            myOvrHmd = NULL;
288
+            return true;
289
         }
290
     }
291
 
292
     if(myOvrHmd != NULL) {
293
-        ovrGLConfig aCfg;
294
-        aCfg.OGL.Header.API              = ovrRenderAPI_OpenGL;
295
-        aCfg.OGL.Header.BackBufferSize.w = myOvrHmd->Resolution.w;
296
-        aCfg.OGL.Header.BackBufferSize.h = myOvrHmd->Resolution.h;
297
-        aCfg.OGL.Header.Multisample      = 1;
298
-    #ifdef _WIN32
299
-        aCfg.OGL.Window = (HWND )getNativeOglWin();
300
-        aCfg.OGL.DC     = (HDC  )getNativeOglDC();
301
-    #elif defined(__ANDROID__)
302
-        //
303
-    #elif defined(__linux__)
304
-        //aCfg.OGL.Disp = getNativeXDisplay();
305
-    #endif
306
-        ovrEyeRenderDesc anEyeRenderDesc[2];
307
-        if(!ovrHmd_ConfigureRendering(myOvrHmd, &aCfg.Config,
308
-                                      ovrDistortionCap_Chromatic | ovrDistortionCap_Vignette | ovrDistortionCap_TimeWarp | ovrDistortionCap_Overdrive,
309
-                                      myOvrHmd->DefaultEyeFov, anEyeRenderDesc)) {
310
-            myMsgQueue->pushError(stCString("ovrHmd_ConfigureRendering() FAILED"));
311
-        } else {
312
-        #ifdef _WIN32
313
-            if(!ovrHmd_AttachToWindow(myOvrHmd, aCfg.OGL.Window, NULL, NULL)) {
314
-                myMsgQueue->pushError(stCString("ovrHmd_AttachToWindow() FAILED!"));
315
-            } else {
316
-                ovrSizei aRecSizeL = ovrHmd_GetFovTextureSize(myOvrHmd, ovrEye_Left,
317
-                                                              myOvrHmd->DefaultEyeFov[0], 1.0f);
318
-                ovrSizei aRecSizeR = ovrHmd_GetFovTextureSize(myOvrHmd, ovrEye_Right,
319
-                                                              myOvrHmd->DefaultEyeFov[1], 1.0f);
320
-
321
-                //ovrHmd_SetEnabledCaps   (myOvrHmd, ovrHmdCap_LowPersistence | ovrHmdCap_DynamicPrediction);
322
-                //ovrHmd_ConfigureTracking(myOvrHmd, ovrTrackingCap_Orientation | ovrTrackingCap_MagYawCorrection | ovrTrackingCap_Position, 0);
323
-
324
-                ST_DEBUG_LOG("libOVR Resolution: " + myOvrHmd->Resolution.w + "x" + myOvrHmd->Resolution.h
325
-                            + "; eyeRectL= " + aRecSizeL.w + "x" + aRecSizeL.h
326
-                            + "; eyeRectR= " + aRecSizeR.w + "x" + aRecSizeR.h);
327
-                if(isMovable()) {
328
-                    StRect<int32_t> aRect = StWindow::getPlacement();
329
-                    aRect.right()  = aRect.left() + myOvrHmd->Resolution.w;
330
-                    aRect.bottom() = aRect.top()  + myOvrHmd->Resolution.h;
331
-                    StWindow::setPlacement(aRect, false);
332
-                }
333
-            }
334
-        #endif
335
+        ovrHmdDesc anHmdDesc = ovr_GetHmdDesc(myOvrHmd);
336
+        ovrSizei aWinSize = { anHmdDesc.Resolution.w / 2, anHmdDesc.Resolution.h / 2 };
337
+
338
+        ST_DEBUG_LOG("libOVR Resolution: " + anHmdDesc.Resolution.w + "x" + anHmdDesc.Resolution.h);
339
+        if(isMovable()) {
340
+            StRect<int32_t> aRect = StWindow::getPlacement();
341
+            aRect.right()  = aRect.left() + aWinSize.w;
342
+            aRect.bottom() = aRect.top()  + aWinSize.h;
343
+            StWindow::setPlacement(aRect, false);
344
         }
345
+
346
+        ovrResult anOvrRes = ovr_CreateMirrorTextureGL(myOvrHmd, GL_SRGB8_ALPHA8, aWinSize.w, aWinSize.h, (ovrTexture** )&myOvrMirrorTexture);
347
+        if(!OVR_SUCCESS(anOvrRes)) {
348
+            myMsgQueue->pushError(stCString("StOutDistorted, Failed to create mirror texture!"));
349
+            myIsBroken = true;
350
+            return true;
351
+        }
352
+
353
+        const GLuint anFboReadBack = myContext->stglFramebufferRead();
354
+        myContext->arbFbo->glGenFramebuffers(1, &myOvrMirrorFbo);
355
+        myContext->stglBindFramebufferRead(myOvrMirrorFbo);
356
+        myContext->arbFbo->glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, myOvrMirrorTexture->OGL.TexId, 0);
357
+        myContext->stglBindFramebufferRead(anFboReadBack);
358
+
359
+        ovrSizei anEyeSizes[2] = {
360
+            ovr_GetFovTextureSize(myOvrHmd, ovrEye_Left,  anHmdDesc.DefaultEyeFov[ovrEye_Left],  1),
361
+            ovr_GetFovTextureSize(myOvrHmd, ovrEye_Right, anHmdDesc.DefaultEyeFov[ovrEye_Right], 1)
362
+        };
363
+        myOvrSizeX = stMax(anEyeSizes[0].w, anEyeSizes[1].w);
364
+        myOvrSizeY = stMax(anEyeSizes[0].h, anEyeSizes[1].h);
365
+        anOvrRes = ovr_CreateSwapTextureSetGL(myOvrHmd, GL_SRGB8_ALPHA8, myOvrSizeX * 2, myOvrSizeY, &myOvrSwapTexture);
366
+        if(!OVR_SUCCESS(anOvrRes)
367
+         || myOvrSwapTexture->TextureCount < 2) {
368
+            myMsgQueue->pushError(stCString("StOutDistorted, Failed to create swap texture!"));
369
+            myIsBroken = true;
370
+            return true;
371
+        }
372
+
373
+        myOvrSwapTexture->CurrentIndex = 0;
374
+        myContext->arbFbo->glGenFramebuffers(2, myOvrSwapFbo);
375
+        myContext->stglBindFramebufferRead(myOvrSwapFbo[0]);
376
+        myContext->arbFbo->glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
377
+                                                  ((ovrGLTexture* )&myOvrSwapTexture->Textures[0])->OGL.TexId, 0);
378
+        myContext->stglBindFramebufferRead(myOvrSwapFbo[1]);
379
+        myContext->arbFbo->glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
380
+                                                  ((ovrGLTexture* )&myOvrSwapTexture->Textures[1])->OGL.TexId, 0);
381
+        myContext->stglBindFramebufferRead(anFboReadBack);
382
     }
383
 #endif
384
-
385
-    myIsBroken = false;
386
     return true;
387
 }
388
 
389
@@ -642,14 +665,22 @@
390
     StArray<StGLVec4> aVerts(4);
391
     const GLfloat aCurLeft = GLfloat(-1.0 + theCursorPos.x() * 2.0);
392
     const GLfloat aCurTop  = GLfloat( 1.0 - theCursorPos.y() * 2.0);
393
-    GLfloat aCurWidth  = 2.0f * GLfloat(myCursor->getSizeX()) / GLfloat(myFrBuffer->getVPSizeX());
394
-    GLfloat aCurHeight = 2.0f * GLfloat(myCursor->getSizeY()) / GLfloat(myFrBuffer->getVPSizeY());
395
-    if(params.Anamorph->getValue()
396
-    && myDevice != DEVICE_OCULUS) {
397
-        if(params.Layout->getValue() == LAYOUT_OVER_UNDER) {
398
-            aCurHeight *= 0.5;
399
-        } else {
400
-            aCurWidth  *= 0.5;
401
+    const int aVPSizeX = myOvrSizeX != 0 ? myOvrSizeX : myFrBuffer->getVPSizeX();
402
+    const int aVPSizeY = myOvrSizeY != 0 ? myOvrSizeY : myFrBuffer->getVPSizeY();
403
+
404
+    GLfloat aCurWidth  = 2.0f * GLfloat(myCursor->getSizeX()) / GLfloat(aVPSizeX);
405
+    GLfloat aCurHeight = 2.0f * GLfloat(myCursor->getSizeY()) / GLfloat(aVPSizeY);
406
+    if(myDevice != DEVICE_OCULUS) {
407
+        switch(params.Layout->getValue()) {
408
+            case LAYOUT_SIDE_BY_SIDE_ANAMORPH:
409
+                aCurWidth  *= 0.5;
410
+                break;
411
+            case LAYOUT_OVER_UNDER_ANAMORPH:
412
+                aCurHeight *= 0.5;
413
+                break;
414
+            case LAYOUT_SIDE_BY_SIDE:
415
+            case LAYOUT_OVER_UNDER:
416
+                break;
417
         }
418
     }
419
     if(theView == ST_DRAW_LEFT) {
420
@@ -683,6 +714,22 @@
421
     myContext->core20fwd->glDisable(GL_BLEND);
422
 }
423
 
424
+bool StOutDistorted::hasOrientationSensor() const {
425
+    if(myOvrHmd != NULL) {
426
+        return true;
427
+    }
428
+    return StWindow::hasOrientationSensor();
429
+}
430
+
431
+StQuaternion<double> StOutDistorted::getDeviceOrientation() const {
432
+    if(StWindow::toTrackOrientation()
433
+    && myOvrHmd != NULL
434
+    && !myIsBroken) {
435
+        return myOvrOrient;
436
+    }
437
+    return StWindow::getDeviceOrientation();
438
+}
439
+
440
 GLfloat StOutDistorted::getLensDist() const {
441
     return (myIsStereoOn && myDevice == DEVICE_OCULUS) ? 0.1453f : 0.0f;
442
 }
443
@@ -697,7 +744,25 @@
444
     return 0.8f;
445
 }
446
 
447
+void StOutDistorted::checkHdmiPack() {
448
+    myIsHdmiPack = false;
449
+    if(!StWindow::isFullScreen()
450
+    || myDevice == DEVICE_OCULUS) {
451
+        return;
452
+    }
453
+
454
+    const StRectI_t aRect = StWindow::getPlacement();
455
+    if(aRect.width()  == 1920
456
+    && aRect.height() == 2205) {
457
+        myIsHdmiPack = true;
458
+    } else if(aRect.width()  == 1280
459
+           && aRect.height() == 1470) {
460
+        myIsHdmiPack = true;
461
+    }
462
+}
463
+
464
 void StOutDistorted::setFullScreen(const bool theFullScreen) {
465
+    bool wasFullscreen = StWindow::isFullScreen();
466
     if(!theFullScreen) {
467
         myMargins.left   = 0;
468
         myMargins.right  = 0;
469
@@ -705,6 +770,9 @@
470
         myMargins.bottom = 0;
471
     }
472
     StWindow::setFullScreen(theFullScreen);
473
+    if(!wasFullscreen) {
474
+        checkHdmiPack();
475
+    }
476
 }
477
 
478
 void StOutDistorted::stglDraw() {
479
@@ -732,13 +800,27 @@
480
         myMargins.bottom = 0;
481
     }
482
 
483
+    StWinSplit aWinSplit = StWinSlave_splitOff;
484
     if(myIsStereoOn
485
-    && (myDevice == DEVICE_OCULUS || !params.Anamorph->getValue())) {
486
-        StWindow::setAttribute(StWinAttr_SplitCfg, (params.Layout->getValue() == LAYOUT_OVER_UNDER && myDevice != DEVICE_OCULUS)
487
-                                                 ? StWinSlave_splitVertical : StWinSlave_splitHorizontal);
488
-    } else {
489
-        StWindow::setAttribute(StWinAttr_SplitCfg, StWinSlave_splitOff);
490
+    && (myDevice == DEVICE_OCULUS
491
+     || params.Layout->getValue() == LAYOUT_SIDE_BY_SIDE
492
+     || params.Layout->getValue() == LAYOUT_OVER_UNDER)) {
493
+        aWinSplit = params.Layout->getValue() == LAYOUT_OVER_UNDER && myDevice != DEVICE_OCULUS
494
+                  ? StWinSlave_splitVertical
495
+                  : StWinSlave_splitHorizontal;
496
+        if(myDevice != DEVICE_OCULUS
497
+        && params.Layout->getValue() == LAYOUT_OVER_UNDER
498
+        && myIsHdmiPack) {
499
+            // detect special HDMI 3D modes
500
+            const StRectI_t aRect = StWindow::getPlacement();
501
+            if(aRect.width() == 1920) {
502
+                aWinSplit = StWinSlave_splitVertHdmi1080;
503
+            } else if(aRect.width() == 1280) {
504
+                aWinSplit = StWinSlave_splitVertHdmi720;
505
+            }
506
+        }
507
     }
508
+    StWindow::setAttribute(StWinAttr_SplitCfg, aWinSplit);
509
 
510
     if(!StWindow::stglMakeCurrent(ST_WIN_MASTER)) {
511
         StWindow::signals.onRedraw(ST_DRAW_MONO);
512
@@ -769,83 +851,85 @@
513
     const StPointD_t aCursorPos = StWindow::getMousePos();
514
 
515
 #ifdef ST_HAVE_LIBOVR
516
-    if(myOvrHmd != NULL) {
517
-        ovrSizei aRecSizeL = ovrHmd_GetFovTextureSize(myOvrHmd, ovrEye_Left,
518
-                                                      myOvrHmd->DefaultEyeFov[0], 1.0f);
519
-        ovrSizei aRecSizeR = ovrHmd_GetFovTextureSize(myOvrHmd, ovrEye_Right,
520
-                                                      myOvrHmd->DefaultEyeFov[1], 1.0f);
521
-        GLint aFrSizeX = aRecSizeL.w + aRecSizeR.w;
522
-        GLint aFrSizeY = stMax(aRecSizeL.h, aRecSizeR.h);
523
-        //aFrSizeX = aVPBoth.width();
524
-        //aFrSizeY = aVPBoth.height();
525
-        myToReduceGui = aFrSizeX <= 640;
526
-
527
-        if(!myFrBuffer->initLazy(*myContext, GL_RGBA8, aFrSizeX, aFrSizeY, StWindow::hasDepthBuffer())) {
528
-            myMsgQueue->pushError(stCString("Distorted output - critical error:\nFrame Buffer Object resize failed!"));
529
-            myIsBroken = true;
530
-            return;
531
-        }
532
+    if(myOvrHmd != NULL
533
+    && !myIsBroken) {
534
+        myToReduceGui = true;
535
+        ovrHmdDesc anHmdDesc = ovr_GetHmdDesc(myOvrHmd);
536
+        ovrEyeRenderDesc anEyeRenderDesc[2] = {
537
+            ovr_GetRenderDesc(myOvrHmd, ovrEye_Left,  anHmdDesc.DefaultEyeFov[0]),
538
+            ovr_GetRenderDesc(myOvrHmd, ovrEye_Right, anHmdDesc.DefaultEyeFov[1])
539
+        };
540
+        ovrViewScaleDesc aViewScaleDesc;
541
+        aViewScaleDesc.HmdSpaceToWorldScaleInMeters = 1.0f;
542
+        aViewScaleDesc.HmdToEyeViewOffset[0] = anEyeRenderDesc[0].HmdToEyeViewOffset;
543
+        aViewScaleDesc.HmdToEyeViewOffset[1] = anEyeRenderDesc[1].HmdToEyeViewOffset;
544
 
545
         const StGLBoxPx aViewPortL = {{ 0, 0,
546
-                                        myFrBuffer->getVPSizeX() / 2, myFrBuffer->getVPSizeY() }};
547
-        const StGLBoxPx aViewPortR = {{ (myFrBuffer->getVPSizeX() + 1) / 2, 0,
548
-                                        myFrBuffer->getVPSizeX() / 2, myFrBuffer->getVPSizeY() }};
549
-
550
-        ovrPosef     anOvrHeadPose[2] = {};
551
-        ovrGLTexture anOvrTextures[2] = {};
552
-
553
-        ovrHmd_BeginFrame(myOvrHmd, 0);
554
-        anOvrHeadPose[ovrEye_Left]  = ovrHmd_GetHmdPosePerEye(myOvrHmd, ovrEye_Left);
555
-        anOvrHeadPose[ovrEye_Right] = ovrHmd_GetHmdPosePerEye(myOvrHmd, ovrEye_Right);
556
+                                        myOvrSizeX, myOvrSizeY }};
557
+        const StGLBoxPx aViewPortR = {{ myOvrSizeX, 0,
558
+                                        myOvrSizeX, myOvrSizeY }};
559
+
560
+        ovrLayerEyeFov aLayerFov;
561
+        aLayerFov.Header.Type       = ovrLayerType_EyeFov;
562
+        aLayerFov.Header.Flags      = ovrLayerFlag_TextureOriginAtBottomLeft;
563
+        aLayerFov.ColorTexture[0]   = myOvrSwapTexture;
564
+        aLayerFov.ColorTexture[1]   = NULL;
565
+        aLayerFov.Viewport[0].Pos.x = aViewPortL.x();
566
+        aLayerFov.Viewport[0].Pos.y = aViewPortL.y();
567
+        aLayerFov.Viewport[0].Size.w= aViewPortL.width();
568
+        aLayerFov.Viewport[0].Size.h= aViewPortL.height();
569
+        aLayerFov.Viewport[1].Pos.x = aViewPortR.x();
570
+        aLayerFov.Viewport[1].Pos.y = aViewPortR.y();
571
+        aLayerFov.Viewport[1].Size.w= aViewPortR.width();
572
+        aLayerFov.Viewport[1].Size.h= aViewPortR.height();
573
+        aLayerFov.Fov[0]            = anHmdDesc.DefaultEyeFov[0];
574
+        aLayerFov.Fov[1]            = anHmdDesc.DefaultEyeFov[1];
575
+        aLayerFov.SensorSampleTime  = ovr_GetTimeInSeconds();
576
+        const double aPredictedTime = ovr_GetPredictedDisplayTime(myOvrHmd, 0);
577
+        ovrTrackingState anHmdState = ovr_GetTrackingState(myOvrHmd, aPredictedTime, ovrTrue);
578
+        ovr_CalcEyePoses(anHmdState.HeadPose.ThePose, aViewScaleDesc.HmdToEyeViewOffset, aLayerFov.RenderPose);
579
+        myOvrOrient = StQuaternion<double>((double )aLayerFov.RenderPose[0].Orientation.x,
580
+                                           (double )aLayerFov.RenderPose[0].Orientation.y,
581
+                                           (double )aLayerFov.RenderPose[0].Orientation.z,
582
+                                           (double )aLayerFov.RenderPose[0].Orientation.w);
583
 
584
         // draw Left View into virtual frame buffer
585
         myContext->stglResizeViewport(aViewPortL);
586
         myContext->stglSetScissorRect(aViewPortL, false);
587
-        myFrBuffer->bindBuffer(*myContext);
588
-            StWindow::signals.onRedraw(ST_DRAW_LEFT);
589
-            stglDrawCursor(aCursorPos, ST_DRAW_LEFT);
590
-        myFrBuffer->unbindBuffer(*myContext);
591
+        myContext->stglBindFramebuffer(myOvrSwapFbo[myOvrSwapTexture->CurrentIndex]);
592
+        StWindow::signals.onRedraw(ST_DRAW_LEFT);
593
+        stglDrawCursor(aCursorPos, ST_DRAW_LEFT);
594
 
595
         // draw Right View into virtual frame buffer
596
         myContext->stglResizeViewport(aViewPortR);
597
         myContext->stglSetScissorRect(aViewPortR, false);
598
-        myFrBuffer->bindBuffer(*myContext);
599
-            StWindow::signals.onRedraw(ST_DRAW_RIGHT);
600
-            stglDrawCursor(aCursorPos, ST_DRAW_RIGHT);
601
-        myFrBuffer->unbindBuffer(*myContext);
602
+        StWindow::signals.onRedraw(ST_DRAW_RIGHT);
603
+        stglDrawCursor(aCursorPos, ST_DRAW_RIGHT);
604
+        myContext->stglBindFramebuffer(StGLFrameBuffer::NO_FRAMEBUFFER);
605
+
606
+        ovrLayerHeader* aLayers = &aLayerFov.Header;
607
+        ovrResult anOvrRes = ovr_SubmitFrame(myOvrHmd, 0, &aViewScaleDesc, &aLayers, 1);
608
+        myOvrSwapTexture->CurrentIndex = myOvrSwapTexture->CurrentIndex == 0 ? 1 : 0;
609
+        if(!OVR_SUCCESS(anOvrRes)) {
610
+            myMsgQueue->pushError(stCString("StOutDistorted, Failed to submit swap texture!"));
611
+            myIsBroken = true;
612
+        }
613
 
614
         myContext->stglResizeViewport(aVPBoth);
615
         myContext->stglResetScissorRect();
616
         myContext->core20fwd->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
617
 
618
-        anOvrTextures[0].OGL.Header.API            = ovrRenderAPI_OpenGL;
619
-        anOvrTextures[0].OGL.Header.TextureSize.w  = myFrBuffer->getSizeX();
620
-        anOvrTextures[0].OGL.Header.TextureSize.h  = myFrBuffer->getSizeY();
621
-        anOvrTextures[0].OGL.Header.RenderViewport.Pos.x  = aViewPortL.x();
622
-        anOvrTextures[0].OGL.Header.RenderViewport.Pos.y  = aViewPortL.y();
623
-        anOvrTextures[0].OGL.Header.RenderViewport.Size.w = aViewPortL.width();
624
-        anOvrTextures[0].OGL.Header.RenderViewport.Size.h = aViewPortL.height();
625
-        anOvrTextures[0].OGL.TexId = myFrBuffer->getTextureColor()->getTextureId();
626
-
627
-        anOvrTextures[1].OGL.Header.API            = ovrRenderAPI_OpenGL;
628
-        anOvrTextures[1].OGL.Header.TextureSize.w  = myFrBuffer->getSizeX();
629
-        anOvrTextures[1].OGL.Header.TextureSize.h  = myFrBuffer->getSizeY();
630
-        anOvrTextures[1].OGL.Header.RenderViewport.Pos.x  = aViewPortR.x();
631
-        anOvrTextures[1].OGL.Header.RenderViewport.Pos.y  = aViewPortR.y();
632
-        anOvrTextures[1].OGL.Header.RenderViewport.Size.w = aViewPortR.width();
633
-        anOvrTextures[1].OGL.Header.RenderViewport.Size.h = aViewPortR.height();
634
-        anOvrTextures[1].OGL.TexId = myFrBuffer->getTextureColor()->getTextureId();
635
-
636
-        ovrHmd_EndFrame(myOvrHmd, anOvrHeadPose, (ovrTexture* )anOvrTextures);
637
-
638
-        ovrHSWDisplayState aWarnDispState;
639
-        ovrHmd_GetHSWDisplayState(myOvrHmd, &aWarnDispState);
640
-        if(aWarnDispState.Displayed) {
641
-            ovrHmd_DismissHSWDisplay(myOvrHmd);
642
-        }
643
+        myContext->stglBindFramebufferRead(myOvrMirrorFbo);
644
+        myContext->stglBindFramebufferDraw(StGLFrameBuffer::NO_FRAMEBUFFER);
645
+        GLint aSrcSizeX = myOvrMirrorTexture->OGL.Header.TextureSize.w;
646
+        GLint aSrcSizeY = myOvrMirrorTexture->OGL.Header.TextureSize.h;
647
+        myContext->arbFbo->glBlitFramebuffer(0, aSrcSizeY, aSrcSizeX, 0,
648
+                                             0, 0, aVPBoth.width(), aVPBoth.height(),
649
+                                             GL_COLOR_BUFFER_BIT, GL_NEAREST);
650
+        myContext->stglBindFramebufferRead(StGLFrameBuffer::NO_FRAMEBUFFER);
651
 
652
         myFPSControl.sleepToTarget(); // decrease FPS to target by thread sleeps
653
-        //StWindow::stglSwap(ST_WIN_ALL);
654
+        StWindow::stglSwap(ST_WIN_ALL);
655
         ++myFPSControl;
656
         return;
657
     }
658
@@ -853,22 +937,24 @@
659
 
660
     StGLBoxPx aViewPortL = aVPMaster;
661
     StGLBoxPx aViewPortR = aVPSlave;
662
-    if(params.Anamorph->getValue()
663
-    && myDevice != DEVICE_OCULUS) {
664
+    if(myDevice != DEVICE_OCULUS) {
665
         switch(params.Layout->getValue()) {
666
-            case LAYOUT_OVER_UNDER: {
667
-                aViewPortL.height() /= 2;
668
-                aViewPortR.height() = aViewPortL.height();
669
-                aViewPortR.y() += aViewPortL.height();
670
+            case LAYOUT_OVER_UNDER_ANAMORPH: {
671
+                aViewPortR.height() /= 2;
672
+                aViewPortL.height() = aViewPortR.height();
673
+                aViewPortL.y() += aViewPortR.height();
674
                 break;
675
             }
676
-            default:
677
-            case LAYOUT_SIDE_BY_SIDE: {
678
+            case LAYOUT_SIDE_BY_SIDE_ANAMORPH: {
679
                 aViewPortL.width() /= 2;
680
                 aViewPortR.width() = aViewPortL.width();
681
                 aViewPortR.x() += aViewPortL.width();
682
                 break;
683
             }
684
+            case LAYOUT_SIDE_BY_SIDE:
685
+            case LAYOUT_OVER_UNDER: {
686
+                break;
687
+            }
688
         }
689
     }
690
 
691
sview-15_10.tar.gz/StOutDistorted/StOutDistorted.h -> sview-15_11.tar.gz/StOutDistorted/StOutDistorted.h Changed
110
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutDistorted, class providing stereoscopic output in anamorph side by side format using StCore toolkit.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutDual library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutDual library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutDistorted_h_
25
@@ -29,8 +20,9 @@
26
 class StGLFrameBuffer;
27
 class StGLTexture;
28
 
29
-struct ovrHmdDesc_;
30
-typedef const ovrHmdDesc_* ovrHmd;
31
+typedef struct ovrHmdStruct* ovrSession;
32
+typedef union ovrGLTexture_s ovrGLTexture;
33
+typedef struct ovrSwapTextureSet_ ovrSwapTextureSet;
34
 
35
 /**
36
  * This class implements stereoscopic rendering on displays
37
@@ -124,6 +116,16 @@
38
      */
39
     ST_CPPEXPORT virtual void showCursor(const bool theToShow);
40
 
41
+    /**
42
+     * Return true if device has orientation sensor.
43
+     */
44
+    ST_CPPEXPORT virtual bool hasOrientationSensor() const;
45
+
46
+    /**
47
+     * Get head orientation.
48
+     */
49
+    ST_CPPEXPORT virtual StQuaternion<double> getDeviceOrientation() const;
50
+
51
     ST_CPPEXPORT virtual GLfloat getLensDist() const;
52
 
53
     /**
54
@@ -134,6 +136,11 @@
55
         private:
56
 
57
     /**
58
+     * Detect frame pack HMDI mode.
59
+     */
60
+    ST_LOCAL void checkHdmiPack();
61
+
62
+    /**
63
      * Release GL resources before window closing.
64
      */
65
     ST_LOCAL void releaseResources();
66
@@ -160,14 +167,15 @@
67
     };
68
 
69
     enum Layout {
70
-        LAYOUT_SIDE_BY_SIDE = 0, //!< anamorph side by side
71
-        LAYOUT_OVER_UNDER   = 1, //!< anamorph over under
72
+        LAYOUT_SIDE_BY_SIDE_ANAMORPH = 0, //!< anamorph  side by side
73
+        LAYOUT_OVER_UNDER_ANAMORPH   = 1, //!< anamorph  over under
74
+        LAYOUT_SIDE_BY_SIDE          = 2, //!< full-size side by side
75
+        LAYOUT_OVER_UNDER            = 3, //!< full-size over under
76
     };
77
 
78
     struct {
79
 
80
         StHandle<StInt32Param> Layout;   //!< pair layout
81
-        StHandle<StBoolParam>  Anamorph; //!< anamorph filter
82
         StHandle<StBoolParam>  MonoClone;//!< display mono in stereo
83
 
84
     } params;
85
@@ -195,13 +203,23 @@
86
 
87
     StMarginsI                myBarMargins;      //!< GUI margins
88
 
89
-    ovrHmd                    myOvrHmd;
90
+    ovrSession                myOvrHmd;
91
+    int                       myOvrSizeX;
92
+    int                       myOvrSizeY;
93
+    StQuaternion<double>      myOvrOrient;
94
+#ifdef ST_HAVE_LIBOVR
95
+    ovrSwapTextureSet*        myOvrSwapTexture;
96
+    GLuint                    myOvrSwapFbo[2];
97
+    ovrGLTexture*             myOvrMirrorTexture;
98
+    GLuint                    myOvrMirrorFbo;
99
+#endif
100
 
101
     bool                      myToReduceGui;     //!< scale down GUI
102
     bool                      myToShowCursor;    //!< cursor visibility flag
103
     bool                      myToCompressMem;   //!< reduce memory usage
104
     bool                      myIsBroken;        //!< special flag for broke state - when FBO can not be allocated
105
     bool                      myIsStereoOn;
106
+    bool                      myIsHdmiPack;      //!< "frame packed" mode in HDMI 1.4a
107
 
108
 };
109
 
110
sview-15_10.tar.gz/StOutDistorted/lang/chinese/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/chinese/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # Chinese translation file for StOutDistorted library
3
 # @author YSC
4
 --------
5
-1000="TV (平行配对)"
6
-1001="扭曲输出"
7
-1002="眼镜裂隙"
8
-1003="桶变形"
9
-1110="配线"
10
-1111="左右并列"
11
-1112="上和下"
12
-1120="扭曲"
13
-1121="无"
14
-1123="单画面"
15
-2000="sView -变形输出模块"
16
-2001="版本"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=TV (平行配对)
19
+1001=扭曲输出
20
+1002=眼镜裂隙
21
+1003=桶变形
22
+1110=配线
23
+1111=左右并列
24
+1112=上和下
25
+1113=左右并列 (Anamorph)
26
+1114=上和下 (Anamorph)
27
+1120=扭曲
28
+1121=无
29
+1123=单画面
30
+2000=sView -变形输出模块
31
+2001=版本
32
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
33
sview-15_10.tar.gz/StOutDistorted/lang/czech/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/czech/StOutDistorted.lng Changed
14
 
1
@@ -9,9 +9,11 @@
2
 1110=Uspořádání dvojice
3
 1111=Vedle sebe
4
 1112=Dvojice Nad/pod
5
+1113=Vedle sebe (Anamorph)
6
+1114=Dvojice Nad/pod (Anamorph)
7
 1120=Filtr
8
 1121=Žádný
9
 1123=Zobrazit mono ve stereu
10
 2000=sView - Modul deformace výstupu
11
 2001=verze
12
-2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0
13
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
14
sview-15_10.tar.gz/StOutDistorted/lang/english/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/english/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # English translation file for StOutDistorted library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="TV (parallel pair)"
6
-1001="Distorted Output"
7
-1002="Oculus Rift"
8
-1003="Barrel distortion"
9
-1110="Layout"
10
-1111="Side-by-Side"
11
-1112="Top-and-Bottom"
12
-1120="Distortion"
13
-1121="None"
14
-1123="Show Mono in Stereo"
15
-2000="sView - Distorted Output module"
16
-2001="version"
17
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=TV (parallel pair)
19
+1001=Distorted Output
20
+1002=Oculus Rift
21
+1003=Barrel distortion
22
+1110=Layout
23
+1111=Side-by-Side
24
+1112=Top-and-Bottom
25
+1113=Side-by-Side (Anamorph)
26
+1114=Top-and-Bottom (Anamorph)
27
+1120=Distortion
28
+1121=None
29
+1123=Show Mono in Stereo
30
+2000=sView - Distorted Output module
31
+2001=version
32
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
33
sview-15_10.tar.gz/StOutDistorted/lang/french/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/french/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # French translation file for StOutDistorted library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="TV (parallel pair)"
6
-1001="Distorted Output"
7
-1002="Oculus Rift"
8
-1003="Barrel distortion"
9
-1110="Layout"
10
-1111="Side-by-Side"
11
-1112="Top-and-Bottom"
12
-1120="Distortion"
13
-1121="None"
14
-1123="Show Mono in Stereo"
15
-2000="sView - Distorted Output module"
16
-2001="version"
17
-2002="© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=TV (parallel pair)
19
+1001=Distorted Output
20
+1002=Oculus Rift
21
+1003=Barrel distortion
22
+1110=Layout
23
+1111=Side-by-Side
24
+1112=Top-and-Bottom
25
+1113=Side-by-Side (Anamorph)
26
+1114=Top-and-Bottom (Anamorph)
27
+1120=Distortion
28
+1121=None
29
+1123=Show Mono in Stereo
30
+2000=sView - Distorted Output module
31
+2001=version
32
+2002=© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}
33
sview-15_10.tar.gz/StOutDistorted/lang/german/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/german/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # German translation file for StOutDistorted library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="TV (parallel pair)"
6
-1001="Distorted Output"
7
-1002="Oculus Rift"
8
-1003="Barrel distortion"
9
-1110="Layout"
10
-1111="Side-by-Side"
11
-1112="Top-and-Bottom"
12
-1120="Verzerrung"
13
-1121="keiner"
14
-1123="Show Mono in Stereo"
15
-2000="sView - Distorted Ausgangsmodul"
16
-2001="Version"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=TV (parallel pair)
19
+1001=Distorted Output
20
+1002=Oculus Rift
21
+1003=Barrel distortion
22
+1110=Layout
23
+1111=Side-by-Side
24
+1112=Top-and-Bottom
25
+1113=Side-by-Side (Anamorph)
26
+1114=Top-and-Bottom (Anamorph)
27
+1120=Verzerrung
28
+1121=keiner
29
+1123=Show Mono in Stereo
30
+2000=sView - Distorted Ausgangsmodul
31
+2001=Version
32
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
33
sview-15_10.tar.gz/StOutDistorted/lang/korean/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/korean/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # English translation file for StOutDistorted library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="TV (parallel pair)"
6
-?1001="Distorted Output"
7
-?1002="Oculus Rift"
8
-?1003="Barrel distortion"
9
-?1110="Layout"
10
-?1111="Side-by-Side"
11
-?1112="Top-and-Bottom"
12
-?1120="Distortion"
13
-?1121="None"
14
-?1123="Show Mono in Stereo"
15
-?2000="sView - Distorted Output module"
16
-?2001="version"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+?1000=TV (parallel pair)
19
+?1001=Distorted Output
20
+?1002=Oculus Rift
21
+?1003=Barrel distortion
22
+?1110=Layout
23
+?1111=Side-by-Side
24
+?1112=Top-and-Bottom
25
+?1113=Side-by-Side (Anamorph)
26
+?1114=Top-and-Bottom (Anamorph)
27
+?1120=Distortion
28
+?1121=None
29
+?1123=Show Mono in Stereo
30
+?2000=sView - Distorted Output module
31
+?2001=version
32
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
33
sview-15_10.tar.gz/StOutDistorted/lang/russian/StOutDistorted.lng -> sview-15_11.tar.gz/StOutDistorted/lang/russian/StOutDistorted.lng Changed
33
 
1
@@ -1,16 +1,18 @@
2
 # Russian translation file for StOutDistorted library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="TV (параллельная пара)"
6
-1001="Distorted Output"
7
-1002="Oculus Rift"
8
-1003="Barrel distortion"
9
-1110="Расположение пары"
10
-1111="Горизонтальная пара"
11
-1112="Вертикальная пара"
12
-1120="Фильтр"
13
-1121="None"
14
-1123="Отображать моно в стерео"
15
-2000="sView - Distorted Output module"
16
-2001="версия"
17
-2002="© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0"
18
+1000=TV (параллельная пара)
19
+1001=Distorted Output
20
+1002=Oculus Rift
21
+1003=Barrel distortion
22
+1110=Расположение пары
23
+1111=Горизонтальная пара
24
+1112=Вертикальная пара
25
+1113=Анаморфная горизонтальная пара
26
+1114=Анаморфная вертикальная пара
27
+1120=Фильтр
28
+1121=None
29
+1123=Отображать моно в стерео
30
+2000=sView - Distorted Output module
31
+2001=версия
32
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
33
sview-15_10.tar.gz/StOutDual/StOutDual.cbp -> sview-15_11.tar.gz/StOutDual/StOutDual.cbp Changed
59
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStOutDual" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Version" />
27
-               </Linker>
28
-               <ExtraCommands>
29
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
30
-               </ExtraCommands>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StOutDual" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
34
                <Option object_output="obj/$(TARGET_NAME)/" />
35
@@ -64,11 +37,11 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StOutDual" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="3" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option createStaticLib="1" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -252,8 +225,7 @@
50
            <Option compilerVar="WINDRES" />
51
            <Option target="WIN_vc_x86" />
52
            <Option target="WIN_vc_AMD64" />
53
-           <Option target="WIN_gcc_x86" />
54
-           <Option target="WIN_vc_x86_DEBUG" />
55
+           <Option target="WIN_vc_AMD64_DEBUG" />
56
        </Unit>
57
        <Unit filename="lang/chinese/language.lng">
58
            <Option target="&lt;{~None~}&gt;" />
59
sview-15_10.tar.gz/StOutDual/StOutDual.cpp -> sview-15_11.tar.gz/StOutDual/StOutDual.cpp Changed
36
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutDual, class providing stereoscopic output for Dual Input hardware using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutDual library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutDual library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutDual.h"
25
@@ -292,7 +283,9 @@
26
 }
27
 
28
 void StOutDual::beforeClose() {
29
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
30
+    if(isMovable() && myWasUsed) {
31
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
32
+    }
33
     mySettings->saveParam(ST_SETTING_SLAVE_ID,  params.SlaveMonId);
34
     mySettings->saveParam(ST_SETTING_MONOCLONE, params.MonoClone);
35
     mySettings->saveInt32(ST_SETTING_DEVICE_ID, myDevice);
36
sview-15_10.tar.gz/StOutDual/StOutDual.h -> sview-15_11.tar.gz/StOutDual/StOutDual.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutDual, class providing stereoscopic output for Dual Input hardware using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutDual library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutDual library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutDual_h_
25
sview-15_10.tar.gz/StOutDual/lang/chinese/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/chinese/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # Chinese translation file for StOutDual library
3
 # @author YSC
4
 --------
5
-1000="双输出"
6
-1001="双输出设备: some HMD,镜面立体显示器, 双投影"
7
-1002="镜面输出"
8
-1003="手工镜面立体显示器 (X-向镜面)"
9
-1102="从显示器(第二个)"
10
-1103="单画面"
11
-2000="sView - 双输出模式"
12
-2001="版本"
13
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
14
+1000=双输出
15
+1001=双输出设备: some HMD,镜面立体显示器, 双投影
16
+1002=镜面输出
17
+1003=手工镜面立体显示器 (X-向镜面)
18
+1102=从显示器(第二个)
19
+1103=单画面
20
+2000=sView - 双输出模式
21
+2001=版本
22
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
23
sview-15_10.tar.gz/StOutDual/lang/czech/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/czech/StOutDual.lng Changed
7
 
1
@@ -10,4 +10,4 @@
2
 1103=Zobrazovat mono ve stereu
3
 2000=sView - modul výstupu na zrcadlové a duální systémy
4
 2001=verze
5
-2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0
6
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
7
sview-15_10.tar.gz/StOutDual/lang/english/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/english/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # English translation file for StOutDual library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Dual Output"
6
-1001="Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors"
7
-1002="Mirror Output"
8
-1003="Hand-make Mirrored Stereo monitors (mirror in X-direction)"
9
-1102="Slave Monitor"
10
-1103="Show Mono in Stereo"
11
-2000="sView - Dual Output module"
12
-2001="version"
13
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
14
+1000=Dual Output
15
+1001=Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors
16
+1002=Mirror Output
17
+1003=Hand-make Mirrored Stereo monitors (mirror in X-direction)
18
+1102=Slave Monitor
19
+1103=Show Mono in Stereo
20
+2000=sView - Dual Output module
21
+2001=version
22
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
23
sview-15_10.tar.gz/StOutDual/lang/french/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/french/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # French translation file for StOutDual library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Double-Sortie"
6
-1001="Sortie Stereo avec double affichage: HMD, moniteurs à miroir stéréo, Double Projecteurs"
7
-1002="Sortie Miroir"
8
-1003="moniteurs à miroir stéréo manuel(mirroir dans X-directions)"
9
-1102="Slave Monitor"
10
-1103="Show Mono in Stereo"
11
-2000="sView - Dual Output module"
12
-2001="version"
13
-2002="© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis library is distributed under LGPL3.0"
14
+1000=Double-Sortie
15
+1001=Sortie Stereo avec double affichage: HMD, moniteurs à miroir stéréo, Double Projecteurs
16
+1002=Sortie Miroir
17
+1003=moniteurs à miroir stéréo manuel(mirroir dans X-directions)
18
+1102=Slave Monitor
19
+1103=Show Mono in Stereo
20
+2000=sView - Dual Output module
21
+2001=version
22
+2002=© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}
23
sview-15_10.tar.gz/StOutDual/lang/german/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/german/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # German translation file for StOutDual library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Doppelausgang"
6
-1001="Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors"
7
-1002="Mirror Output"
8
-1003="Hand-make Mirrored Stereo monitors (mirror in X-direction)"
9
-1102="Slave Monitor"
10
-1103="Show Mono in Stereo"
11
-2000="sView - Dual Ausgangsmodul"
12
-2001="Version"
13
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
14
+1000=Doppelausgang
15
+1001=Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors
16
+1002=Mirror Output
17
+1003=Hand-make Mirrored Stereo monitors (mirror in X-direction)
18
+1102=Slave Monitor
19
+1103=Show Mono in Stereo
20
+2000=sView - Dual Ausgangsmodul
21
+2001=Version
22
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
23
sview-15_10.tar.gz/StOutDual/lang/korean/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/korean/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # English translation file for StOutDual library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="Dual Output"
6
-?1001="Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors"
7
-?1002="Mirror Output"
8
-?1003="Hand-make Mirrored Stereo monitors (mirror in X-direction)"
9
-?1102="Slave Monitor"
10
-?1103="Show Mono in Stereo"
11
-?2000="sView - Dual Output module"
12
-?2001="version"
13
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
14
+?1000=Dual Output
15
+?1001=Stereo-device with dual input: some HMD, Mirrored Stereo monitors, Dual-Projectors
16
+?1002=Mirror Output
17
+?1003=Hand-make Mirrored Stereo monitors (mirror in X-direction)
18
+?1102=Slave Monitor
19
+?1103=Show Mono in Stereo
20
+?2000=sView - Dual Output module
21
+?2001=version
22
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
23
sview-15_10.tar.gz/StOutDual/lang/russian/StOutDual.lng -> sview-15_11.tar.gz/StOutDual/lang/russian/StOutDual.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # Russian translation file for StOutDual library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Двойной вывод"
6
-1001="Профессиональные HMD, зеркальные мониторы, многопроекторные системы"
7
-1002="Зеркальный вывод"
8
-1003="Самодельные зеркальные системы"
9
-1102="Второй монитор"
10
-1103="Отображать моно в стерео"
11
-2000="sView - модуль вывода на Зеркальные стереосистемы"
12
-2001="версия"
13
-2002="© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0"
14
+1000=Двойной вывод
15
+1001=Профессиональные HMD, зеркальные мониторы, многопроекторные системы
16
+1002=Зеркальный вывод
17
+1003=Самодельные зеркальные системы
18
+1102=Второй монитор
19
+1103=Отображать моно в стерео
20
+2000=sView - модуль вывода на Зеркальные стереосистемы
21
+2001=версия
22
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
23
sview-15_10.tar.gz/StOutIZ3D/StOutIZ3D.cbp -> sview-15_11.tar.gz/StOutIZ3D/StOutIZ3D.cbp Changed
59
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStOutIZ3D" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Version" />
27
-               </Linker>
28
-               <ExtraCommands>
29
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
30
-               </ExtraCommands>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StOutIZ3D" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
34
                <Option object_output="obj/$(TARGET_NAME)/" />
35
@@ -64,11 +37,11 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StOutIZ3D" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="3" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option createStaticLib="1" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -257,8 +230,7 @@
50
            <Option compilerVar="WINDRES" />
51
            <Option target="WIN_vc_x86" />
52
            <Option target="WIN_vc_AMD64" />
53
-           <Option target="WIN_gcc_x86" />
54
-           <Option target="WIN_vc_x86_DEBUG" />
55
+           <Option target="WIN_vc_AMD64_DEBUG" />
56
        </Unit>
57
        <Unit filename="StOutIZ3DShaders.cpp" />
58
        <Unit filename="StOutIZ3DShaders.h" />
59
sview-15_10.tar.gz/StOutIZ3D/StOutIZ3D.cpp -> sview-15_11.tar.gz/StOutIZ3D/StOutIZ3D.cpp Changed
36
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output for iZ3D monitors using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutIZ3D library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutIZ3D library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutIZ3D.h"
25
@@ -194,7 +185,9 @@
26
 }
27
 
28
 void StOutIZ3D::beforeClose() {
29
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
30
+    if(isMovable() && myWasUsed) {
31
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
32
+    }
33
     mySettings->saveParam(ST_SETTING_TABLE, params.Glasses);
34
     mySettings->flush();
35
 }
36
sview-15_10.tar.gz/StOutIZ3D/StOutIZ3D.h -> sview-15_11.tar.gz/StOutIZ3D/StOutIZ3D.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output for iZ3D monitors using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutIZ3D library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutIZ3D library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutIZ3D_h_
25
sview-15_10.tar.gz/StOutIZ3D/StOutIZ3DShaders.cpp -> sview-15_11.tar.gz/StOutIZ3D/StOutIZ3DShaders.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output for iZ3D monitors using StCore toolkit.
4
  * Copyright © 2009-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutIZ3D library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutIZ3D library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutIZ3DShaders.h"
25
sview-15_10.tar.gz/StOutIZ3D/StOutIZ3DShaders.h -> sview-15_11.tar.gz/StOutIZ3D/StOutIZ3DShaders.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output for iZ3D monitors using StCore toolkit.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutIZ3D library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutIZ3D library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutIZ3DShaders_h_
25
sview-15_10.tar.gz/StOutIZ3D/lang/chinese/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/chinese/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # Chinese translation file for StOutIZ3D library
3
 # @author YSC
4
 --------
5
-1000="IZ3D 显示"
6
-1001="IZ3D 显示"
7
-1102="iZ3D 眼镜"
8
-1120="传统"
9
-1121="现代"
10
-1122="传统 (快)"
11
-2000="sView - iZ3D 输出模式"
12
-2001="版本"
13
-?2002="© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com\n\nThis library is distributed under LGPL3.0"
14
+1000=IZ3D 显示
15
+1001=IZ3D 显示
16
+1102=iZ3D 眼镜
17
+1120=传统
18
+1121=现代
19
+1122=传统 (快)
20
+2000=sView - iZ3D 输出模式
21
+2001=版本
22
+?2002=© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/lang/czech/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/czech/StOutIZ3D.lng Changed
7
 
1
@@ -10,4 +10,4 @@
2
 1122=Klasické (rychlé)
3
 2000=sView - Modul stereovýstupu pro monitor iZ3D
4
 2001=версия
5
-2002=© {0} Гаврилов Кирилл <{1}>\n© 2007-2009 iZ3D LLC\nОфициальный сайт: {2}\nСайт iZ3D LLC: www.iz3d.com\n\nБиблиотека распространяется на условиях LGPL3.0
6
+2002=© {0} Гаврилов Кирилл <{1}>\n© 2007-2009 iZ3D LLC\nОфициальный сайт: {2}\nСайт iZ3D LLC: www.iz3d.com
7
sview-15_10.tar.gz/StOutIZ3D/lang/english/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/english/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # English translation file for StOutIZ3D library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="IZ3D Display"
6
-1001="IZ3D Display"
7
-1102="iZ3D glasses"
8
-1120="Classic"
9
-1121="Modern"
10
-1122="Classic (fast)"
11
-2000="sView - iZ3D Output module"
12
-2001="version"
13
-2002="© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com\n\nThis library is distributed under LGPL3.0"
14
+1000=IZ3D Display
15
+1001=IZ3D Display
16
+1102=iZ3D glasses
17
+1120=Classic
18
+1121=Modern
19
+1122=Classic (fast)
20
+2000=sView - iZ3D Output module
21
+2001=version
22
+2002=© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/lang/french/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/french/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # French translation file for StOutIZ3D library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Affichage IZ3D"
6
-1001="Affichage IZ3D"
7
-1102="Lunettes iZ3D"
8
-1120="Classique"
9
-1121="Moderne"
10
-1122="Classice (rapide)"
11
-2000="sView - iZ3D Output module"
12
-2001="version"
13
-?2002="© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com\n\nThis library is distributed under LGPL3.0"
14
+1000=Affichage IZ3D
15
+1001=Affichage IZ3D
16
+1102=Lunettes iZ3D
17
+1120=Classique
18
+1121=Moderne
19
+1122=Classice (rapide)
20
+2000=sView - iZ3D Output module
21
+2001=version
22
+?2002=© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/lang/german/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/german/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # German translation file for StOutIZ3D library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="IZ3D Bildschirmen"
6
-1001="IZ3D Bildschirmen"
7
-1102="iZ3D Brillen"
8
-1120="Klassisch"
9
-1121="Modern"
10
-1122="Klassisch (schnell)"
11
-2000="sView - iZ3D Ausgangsmodul"
12
-2001="Version"
13
-?2002="© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com\n\nThis library is distributed under LGPL3.0"
14
+1000=IZ3D Bildschirmen
15
+1001=IZ3D Bildschirmen
16
+1102=iZ3D Brillen
17
+1120=Klassisch
18
+1121=Modern
19
+1122=Klassisch (schnell)
20
+2000=sView - iZ3D Ausgangsmodul
21
+2001=Version
22
+?2002=© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/lang/korean/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/korean/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # English translation file for StOutIZ3D library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="IZ3D Display"
6
-?1001="IZ3D Display"
7
-?1102="iZ3D glasses"
8
-?1120="Classic"
9
-?1121="Modern"
10
-?1122="Classic (fast)"
11
-?2000="sView - iZ3D Output module"
12
-?2001="version"
13
-?2002="© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com\n\nThis library is distributed under LGPL3.0"
14
+?1000=IZ3D Display
15
+?1001=IZ3D Display
16
+?1102=iZ3D glasses
17
+?1120=Classic
18
+?1121=Modern
19
+?1122=Classic (fast)
20
+?2000=sView - iZ3D Output module
21
+?2001=version
22
+?2002=© {0} Kirill Gavrilov <{1}>\n© 2007-2009 iZ3D LLC\nOfficial site: {2}\nSite iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/lang/russian/StOutIZ3D.lng -> sview-15_11.tar.gz/StOutIZ3D/lang/russian/StOutIZ3D.lng Changed
23
 
1
@@ -1,12 +1,12 @@
2
 # Russian translation file for StOutIZ3D library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Монитор IZ3D"
6
-1001="Монитор IZ3D"
7
-1102="Модель очков"
8
-1120="Классика"
9
-1121="Современные"
10
-1122="Классика (быстрый)"
11
-2000="sView - модуль стереовывода на мониторы iZ3D"
12
-2001="версия"
13
-2002="© {0} Гаврилов Кирилл <{1}>\n© 2007-2009 iZ3D LLC\nОфициальный сайт: {2}\nСайт iZ3D LLC: www.iz3d.com\n\nБиблиотека распространяется на условиях LGPL3.0"
14
+1000=Монитор IZ3D
15
+1001=Монитор IZ3D
16
+1102=Модель очков
17
+1120=Классика
18
+1121=Современные
19
+1122=Классика (быстрый)
20
+2000=sView - модуль стереовывода на мониторы iZ3D
21
+2001=версия
22
+2002=© {0} Гаврилов Кирилл <{1}>\n© 2007-2009 iZ3D LLC\nОфициальный сайт: {2}\nСайт iZ3D LLC: www.iz3d.com
23
sview-15_10.tar.gz/StOutIZ3D/shaders/fIZ3DBackClassic.shf -> sview-15_11.tar.gz/StOutIZ3D/shaders/fIZ3DBackClassic.shf Changed
24
 
1
@@ -3,19 +3,9 @@
2
  * Copyright © 2007-2008 iZ3D LLC
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutIZ3D library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutIZ3D library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 // it is always better to store variables in vectors
24
sview-15_10.tar.gz/StOutIZ3D/shaders/fIZ3DBackTable.shf -> sview-15_11.tar.gz/StOutIZ3D/shaders/fIZ3DBackTable.shf Changed
24
 
1
@@ -3,19 +3,9 @@
2
  * Copyright © 2007-2009 iZ3D LLC
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutIZ3D library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutIZ3D library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform sampler2D texL, texR, textT;
24
sview-15_10.tar.gz/StOutIZ3D/shaders/fIZ3DFrontClassic.shf -> sview-15_11.tar.gz/StOutIZ3D/shaders/fIZ3DFrontClassic.shf Changed
24
 
1
@@ -3,19 +3,9 @@
2
  * Copyright © 2007-2008 iZ3D LLC
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutIZ3D library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutIZ3D library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 vec4 vecOne   = vec4(    1.0,     1.0,     1.0,     1.0);
24
sview-15_10.tar.gz/StOutIZ3D/shaders/fIZ3DFrontTable.shf -> sview-15_11.tar.gz/StOutIZ3D/shaders/fIZ3DFrontTable.shf Changed
24
 
1
@@ -3,19 +3,9 @@
2
  * Copyright © 2007-2009 iZ3D LLC
3
  * Copyright © 2007-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutIZ3D library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutIZ3D library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform sampler2D texL, texR, textT;
24
sview-15_10.tar.gz/StOutIZ3D/shaders/vIZ3D.shv -> sview-15_11.tar.gz/StOutIZ3D/shaders/vIZ3D.shv Changed
24
 
1
@@ -1,19 +1,9 @@
2
 /**
3
  * Copyright © 2009-2010 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutIZ3D library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutIZ3D library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 // per-vertex input
24
sview-15_10.tar.gz/StOutInterlace/StOutInterlace.cbp -> sview-15_11.tar.gz/StOutInterlace/StOutInterlace.cbp Changed
59
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStOutInterlace" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="Version" />
27
-               </Linker>
28
-               <ExtraCommands>
29
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
30
-               </ExtraCommands>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StOutInterlace" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
34
                <Option object_output="obj/$(TARGET_NAME)/" />
35
@@ -64,11 +37,11 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StOutInterlace" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="3" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option createStaticLib="1" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -252,8 +225,7 @@
50
            <Option compilerVar="WINDRES" />
51
            <Option target="WIN_vc_x86" />
52
            <Option target="WIN_vc_AMD64" />
53
-           <Option target="WIN_gcc_x86" />
54
-           <Option target="WIN_vc_x86_DEBUG" />
55
+           <Option target="WIN_vc_AMD64_DEBUG" />
56
        </Unit>
57
        <Unit filename="lang/chinese/language.lng">
58
            <Option target="&lt;{~None~}&gt;" />
59
sview-15_10.tar.gz/StOutInterlace/StOutInterlace.cpp -> sview-15_11.tar.gz/StOutInterlace/StOutInterlace.cpp Changed
36
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output in row interlaced format using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutInterlace library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutInterlace library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutInterlace.h"
25
@@ -377,7 +368,9 @@
26
 }
27
 
28
 void StOutInterlace::beforeClose() {
29
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
30
+    if(isMovable() && myWasUsed) {
31
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
32
+    }
33
     mySettings->saveParam(ST_SETTING_BIND_MONITOR, params.BindToMon);
34
     mySettings->saveParam(ST_SETTING_REVERSE,      params.ToReverse);
35
     mySettings->saveInt32(ST_SETTING_DEVICE_ID,    myDevice);
36
sview-15_10.tar.gz/StOutInterlace/StOutInterlace.h -> sview-15_11.tar.gz/StOutInterlace/StOutInterlace.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutInterlace, class providing stereoscopic output in row interlaced format using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutInterlace library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutInterlace library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutInterlace_h_
25
sview-15_10.tar.gz/StOutInterlace/lang/chinese/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/chinese/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # Chinese translation file for StOutInterlace library
3
 # @author YSC
4
 --------
5
-1000="水平交错"
6
-1001="水平交错显示: Zalman, 现代,..."
7
-1002="垂直交错"
8
-1003="垂直交错显示"
9
-1006="DLP TV (棋盘式)"
10
-1007="DLP TV (棋盘式)"
11
-1008="交错ED显示器"
12
-1009="空间交错模式"
13
-1102="次序颠倒"
14
-1103="强制支持显示器"
15
-2000="sView - 交错输出模块"
16
-2001="版本"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=水平交错
19
+1001=水平交错显示: Zalman, 现代,...
20
+1002=垂直交错
21
+1003=垂直交错显示
22
+1006=DLP TV (棋盘式)
23
+1007=DLP TV (棋盘式)
24
+1008=交错ED显示器
25
+1009=空间交错模式
26
+1102=次序颠倒
27
+1103=强制支持显示器
28
+2000=sView - 交错输出模块
29
+2001=版本
30
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
31
sview-15_10.tar.gz/StOutInterlace/lang/czech/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/czech/StOutInterlace.lng Changed
7
 
1
@@ -14,4 +14,4 @@
2
 1103=Provázat s monitorem
3
 2000=sView - modul prokládaného zobrazování
4
 2001=verze
5
-2002=© {0} Гаврилов Кирилл <{1}>\noficiální strana: {2}\n\nБиблиотека распространяется на условиях LGPL3.0
6
+2002=© {0} Гаврилов Кирилл <{1}>\noficiální strana: {2}
7
sview-15_10.tar.gz/StOutInterlace/lang/english/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/english/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # English translation file for StOutInterlace library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Row Interlaced"
6
-1001="Row interlaced displays: Zalman, Hyundai,..."
7
-1002="Column Interlaced"
8
-1003="Column interlaced displays"
9
-1006="DLP TV (chessboard)"
10
-1007="DLP TV (chessboard)"
11
-1008="Interlaced ED"
12
-1009="EDimensional in interlaced mode"
13
-1102="Reverse Order"
14
-1103="Bind to supported monitor"
15
-2000="sView - Interlaced Output module"
16
-2001="version"
17
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=Row Interlaced
19
+1001=Row interlaced displays: Zalman, Hyundai,...
20
+1002=Column Interlaced
21
+1003=Column interlaced displays
22
+1006=DLP TV (chessboard)
23
+1007=DLP TV (chessboard)
24
+1008=Interlaced ED
25
+1009=EDimensional in interlaced mode
26
+1102=Reverse Order
27
+1103=Bind to supported monitor
28
+2000=sView - Interlaced Output module
29
+2001=version
30
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
31
sview-15_10.tar.gz/StOutInterlace/lang/french/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/french/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # French translation file for StOutInterlace library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Lignes entrelacées"
6
-1001="Ecrans entrelacés par lignes: Zalman, Hyundai,..."
7
-1002="Colonnes entrelacées"
8
-1003="Ecrans entrelacés par colonnes"
9
-1006="DLP TV (échiquier)"
10
-1007="DLP TV (échiquier)"
11
-1008="Interlaced ED"
12
-1009="EDimensional en mode entrelacé"
13
-1102="Inverser l'ordre"
14
-1103="Lier à écran supporté"
15
-2000="sView - Interlaced Output module"
16
-2001="version"
17
-2002="© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=Lignes entrelacées
19
+1001=Ecrans entrelacés par lignes: Zalman, Hyundai,...
20
+1002=Colonnes entrelacées
21
+1003=Ecrans entrelacés par colonnes
22
+1006=DLP TV (échiquier)
23
+1007=DLP TV (échiquier)
24
+1008=Interlaced ED
25
+1009=EDimensional en mode entrelacé
26
+1102=Inverser l'ordre
27
+1103=Lier à écran supporté
28
+2000=sView - Interlaced Output module
29
+2001=version
30
+2002=© {0} Kirill Gavrilov <{1}>\nSite Officiel: {2}
31
sview-15_10.tar.gz/StOutInterlace/lang/german/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/german/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # German translation file for StOutInterlace library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Horizontal Interlaced"
6
-1001="Row interlaced displays: Zalman, Hyundai,..."
7
-1002="Vertikal Interlaced"
8
-1003="Column interlaced displays"
9
-1006="DLP TV (chessboard)"
10
-1007="DLP TV (chessboard)"
11
-1008="Interlaced ED"
12
-1009="EDimensional in interlaced mode"
13
-1102="Umgekehrte Reihenfolge"
14
-1103="Bind to supported monitor"
15
-2000="sView - Interlaced Ausgangsmodul"
16
-2001="Version"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+1000=Horizontal Interlaced
19
+1001=Row interlaced displays: Zalman, Hyundai,...
20
+1002=Vertikal Interlaced
21
+1003=Column interlaced displays
22
+1006=DLP TV (chessboard)
23
+1007=DLP TV (chessboard)
24
+1008=Interlaced ED
25
+1009=EDimensional in interlaced mode
26
+1102=Umgekehrte Reihenfolge
27
+1103=Bind to supported monitor
28
+2000=sView - Interlaced Ausgangsmodul
29
+2001=Version
30
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
31
sview-15_10.tar.gz/StOutInterlace/lang/korean/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/korean/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # English translation file for StOutInterlace library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="Row Interlaced"
6
-?1001="Row interlaced displays: Zalman, Hyundai,..."
7
-?1002="Column Interlaced"
8
-?1003="Column interlaced displays"
9
-?1006="DLP TV (chessboard)"
10
-?1007="DLP TV (chessboard)"
11
-?1008="Interlaced ED"
12
-?1009="EDimensional in interlaced mode"
13
-?1102="Reverse Order"
14
-?1103="Bind to supported monitor"
15
-?2000="sView - Interlaced Output module"
16
-?2001="version"
17
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
18
+?1000=Row Interlaced
19
+?1001=Row interlaced displays: Zalman, Hyundai,...
20
+?1002=Column Interlaced
21
+?1003=Column interlaced displays
22
+?1006=DLP TV (chessboard)
23
+?1007=DLP TV (chessboard)
24
+?1008=Interlaced ED
25
+?1009=EDimensional in interlaced mode
26
+?1102=Reverse Order
27
+?1103=Bind to supported monitor
28
+?2000=sView - Interlaced Output module
29
+?2001=version
30
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
31
sview-15_10.tar.gz/StOutInterlace/lang/russian/StOutInterlace.lng -> sview-15_11.tar.gz/StOutInterlace/lang/russian/StOutInterlace.lng Changed
31
 
1
@@ -1,16 +1,16 @@
2
 # Russian translation file for StOutInterlace library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Чересстрочный вывод"
6
-1001="Чересстрочные мониторы: Zalman, Hyundai,..."
7
-1002="Column Interlaced"
8
-1003="Column interlaced displays"
9
-1006="DLP ТВ (шахматная доска)"
10
-1007="DLP ТВ (шахматная доска)"
11
-1008="Чересстрочный ED"
12
-1009="EDimensional в чересстрочном режиме"
13
-1102="Реверсировать порядок"
14
-1103="Bind to supported monitor"
15
-2000="sView - модуль Чересстрочного стереовывода"
16
-2001="версия"
17
-2002="© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0"
18
+1000=Чересстрочный вывод
19
+1001=Чересстрочные мониторы: Zalman, Hyundai,...
20
+1002=Column Interlaced
21
+1003=Column interlaced displays
22
+1006=DLP ТВ (шахматная доска)
23
+1007=DLP ТВ (шахматная доска)
24
+1008=Чересстрочный ED
25
+1009=EDimensional в чересстрочном режиме
26
+1102=Реверсировать порядок
27
+1103=Bind to supported monitor
28
+2000=sView - модуль Чересстрочного стереовывода
29
+2001=версия
30
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
31
sview-15_10.tar.gz/StOutInterlace/shaders/fEDinterlace.shf -> sview-15_11.tar.gz/StOutInterlace/shaders/fEDinterlace.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * EDimensional interlace activation fragment shader.
3
  * Copyright © 2009 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutInterlace library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutInterlace library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform int vpSizeY;
24
sview-15_10.tar.gz/StOutInterlace/shaders/fEDoff.shf -> sview-15_11.tar.gz/StOutInterlace/shaders/fEDoff.shf Changed
24
 
1
@@ -2,19 +2,9 @@
2
  * EDimensional disactivation fragment shader.
3
  * Copyright © 2009 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutInterlace library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutInterlace library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 uniform int vpSizeY;
24
sview-15_10.tar.gz/StOutInterlace/shaders/vED.shv -> sview-15_11.tar.gz/StOutInterlace/shaders/vED.shv Changed
24
 
1
@@ -1,19 +1,9 @@
2
 /**
3
  * Copyright © 2009 Kirill Gavrilov <kirill@sview.ru>
4
  *
5
- * StOutInterlace library is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU Lesser General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * StOutInterlace library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
- * See the GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General Public
16
- * License along with this library.
17
- * If not, see <http://www.gnu.org/licenses/>.
18
+ * Distributed under the Boost Software License, Version 1.0.
19
+ * See accompanying file license-boost.txt or copy at
20
+ * http://www.boost.org/LICENSE_1_0.txt
21
  */
22
 
23
 void main(void) {
24
sview-15_10.tar.gz/StOutPageFlip/StDXAqbsControl.cpp -> sview-15_11.tar.gz/StOutPageFlip/StDXAqbsControl.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if(defined(_WIN32) || defined(__WIN32__))
25
sview-15_10.tar.gz/StOutPageFlip/StDXAqbsControl.h -> sview-15_11.tar.gz/StOutPageFlip/StDXAqbsControl.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StDXAqbsControl_h_
25
sview-15_10.tar.gz/StOutPageFlip/StDXInfo.h -> sview-15_11.tar.gz/StOutPageFlip/StDXInfo.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StDXInfo_h_
25
sview-15_10.tar.gz/StOutPageFlip/StDXManager.cpp -> sview-15_11.tar.gz/StOutPageFlip/StDXManager.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifdef _WIN32
25
sview-15_10.tar.gz/StOutPageFlip/StDXManager.h -> sview-15_11.tar.gz/StOutPageFlip/StDXManager.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StDXManager_h_
25
sview-15_10.tar.gz/StOutPageFlip/StDXNVSurface.cpp -> sview-15_11.tar.gz/StOutPageFlip/StDXNVSurface.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if defined(_WIN32)
25
sview-15_10.tar.gz/StOutPageFlip/StDXNVSurface.h -> sview-15_11.tar.gz/StOutPageFlip/StDXNVSurface.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StDXNVSurface_h_
25
sview-15_10.tar.gz/StOutPageFlip/StDXNVWindow.cpp -> sview-15_11.tar.gz/StOutPageFlip/StDXNVWindow.cpp Changed
105
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
5
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StOutPageFlip library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StOutPageFlip library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #ifdef _WIN32
26
@@ -50,7 +41,10 @@
27
   myEventQuit  (false),
28
   myEventShow  (false),
29
   myEventHide  (false),
30
-  myEventUpdate(false) {
31
+  myEventUpdate(false),
32
+  myEventCursorShow(false),
33
+  myEventCursorHide(false),
34
+  myToHideCursor(false) {
35
     stMemZero(myMouseState, sizeof(myMouseState));
36
     stMemZero(&myWinMsg,    sizeof(myWinMsg));
37
     stMemZero(myKeysMap,    sizeof(myKeysMap));
38
@@ -194,6 +188,19 @@
39
     return true;
40
 }
41
 
42
+void StDXNVWindow::showCursor(bool theToShow) {
43
+    if(myToHideCursor != theToShow) {
44
+        return;
45
+    }
46
+
47
+    if(theToShow) {
48
+        myEventCursorShow.set();
49
+    } else {
50
+        myEventCursorHide.set();
51
+    }
52
+    myToHideCursor = !theToShow;
53
+}
54
+
55
 void StDXNVWindow::dxShow() {
56
     POINT aCursorPos = {};
57
     ::GetCursorPos(&aCursorPos); // backup cursor position
58
@@ -364,17 +371,22 @@
59
         StDXMsg_Show,
60
         StDXMsg_Hide,
61
         StDXMsg_Update,
62
-        StDXMsg_WINDOW
63
+        StDXMsg_CursorShow,
64
+        StDXMsg_CursorHide,
65
+        StDXMsg_WINDOW,
66
+        StDXMsg_NB = StDXMsg_WINDOW
67
     };
68
-    HANDLE aWaitEvents[4] = {};
69
-    aWaitEvents[StDXMsg_Quit]   = myEventQuit  .getHandle();
70
-    aWaitEvents[StDXMsg_Show]   = myEventShow  .getHandle();
71
-    aWaitEvents[StDXMsg_Hide]   = myEventHide  .getHandle();
72
-    aWaitEvents[StDXMsg_Update] = myEventUpdate.getHandle();
73
+    HANDLE aWaitEvents[StDXMsg_NB] = {};
74
+    aWaitEvents[StDXMsg_Quit]       = myEventQuit  .getHandle();
75
+    aWaitEvents[StDXMsg_Show]       = myEventShow  .getHandle();
76
+    aWaitEvents[StDXMsg_Hide]       = myEventHide  .getHandle();
77
+    aWaitEvents[StDXMsg_Update]     = myEventUpdate.getHandle();
78
+    aWaitEvents[StDXMsg_CursorShow] = myEventCursorShow.getHandle();
79
+    aWaitEvents[StDXMsg_CursorHide] = myEventCursorHide.getHandle();
80
 
81
     myEventReady.set();
82
     for(;;) {
83
-        switch(::MsgWaitForMultipleObjects(4, aWaitEvents, FALSE, INFINITE, QS_ALLINPUT)) {
84
+        switch(::MsgWaitForMultipleObjects(StDXMsg_NB, aWaitEvents, FALSE, INFINITE, QS_ALLINPUT)) {
85
             case WAIT_OBJECT_0 + StDXMsg_Quit: {
86
                 ST_DEBUG_LOG_AT("releaseDXWindow() [message thread]");
87
                 if(myIsThreadedDx) {
88
@@ -412,6 +424,16 @@
89
                 }
90
                 break;
91
             }
92
+            case WAIT_OBJECT_0 + StDXMsg_CursorShow: {
93
+                ::ShowCursor(TRUE);
94
+                myEventCursorShow.reset();
95
+                break;
96
+            }
97
+            case WAIT_OBJECT_0 + StDXMsg_CursorHide: {
98
+                ::ShowCursor(FALSE);
99
+                myEventCursorHide.reset();
100
+                break;
101
+            }
102
             case WAIT_OBJECT_0 + StDXMsg_WINDOW: {
103
                 // a windows message has arrived
104
                 peekMessages();
105
sview-15_10.tar.gz/StOutPageFlip/StDXNVWindow.h -> sview-15_11.tar.gz/StOutPageFlip/StDXNVWindow.h Changed
48
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
5
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StOutPageFlip library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StOutPageFlip library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #ifdef _WIN32
26
@@ -53,6 +44,11 @@
27
     ~StDXNVWindow();
28
 
29
     /**
30
+     * Post message to hide the cursor.
31
+     */
32
+    void showCursor(bool theToShow);
33
+
34
+    /**
35
      * Specify if WGL <-> D3D interoperation extension should be used.
36
      */
37
     bool toUseWglDxInterop() const {
38
@@ -289,6 +285,9 @@
39
     StCondition             myEventShow;
40
     StCondition             myEventHide;
41
     StCondition             myEventUpdate;
42
+    StCondition             myEventCursorShow; //!< event to show cursor
43
+    StCondition             myEventCursorHide; //!< event to hide cursor
44
+    bool                    myToHideCursor;
45
 
46
 };
47
 
48
sview-15_10.tar.gz/StOutPageFlip/StGLColoredLine.cpp -> sview-15_11.tar.gz/StOutPageFlip/StGLColoredLine.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2010-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StGLColoredLine.h"
25
sview-15_10.tar.gz/StOutPageFlip/StGLColoredLine.h -> sview-15_11.tar.gz/StOutPageFlip/StGLColoredLine.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2010-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StGLColoredLine_h_
25
sview-15_10.tar.gz/StOutPageFlip/StGLControlED.cpp -> sview-15_11.tar.gz/StOutPageFlip/StGLControlED.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2010-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StGLControlED.h"
25
sview-15_10.tar.gz/StOutPageFlip/StGLControlED.h -> sview-15_11.tar.gz/StOutPageFlip/StGLControlED.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2010-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StGLControlED_h_
25
sview-15_10.tar.gz/StOutPageFlip/StGLDeviceControl.h -> sview-15_11.tar.gz/StOutPageFlip/StGLDeviceControl.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2010-2012 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StGLDeviceControl_h_
25
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlip.cbp -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlip.cbp Changed
66
 
1
@@ -6,39 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/libStOutPageFlip" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option object_output="obj/$(TARGET_NAME)/" />
8
-               <Option type="3" />
9
-               <Option compiler="gcc" />
10
-               <Option createStaticLib="1" />
11
-               <Compiler>
12
-                   <Add option="-O3" />
13
-                   <Add option="-std=c++0x" />
14
-                   <Add option="-Wall" />
15
-                   <Add option="-g" />
16
-                   <Add option="-shared" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-fcheck-new" />
20
-                   <Add option="-fno-strict-aliasing" />
21
-                   <Add option="-Wno-comment" />
22
-                   <Add option="-Wno-unknown-pragmas" />
23
-                   <Add option="-DUNICODE" />
24
-                   <Add option="-DST_DEBUG" />
25
-                   <Add option="-DST_HAVE_STCONFIG" />
26
-               </Compiler>
27
-               <Linker>
28
-                   <Add library="opengl32" />
29
-                   <Add library="gdi32" />
30
-                   <Add library="Version" />
31
-                   <Add library="D3D9" />
32
-                   <Add library="nvapi" />
33
-               </Linker>
34
-               <ExtraCommands>
35
-                   <Add before='cmd /c call ..\copy_res.bat $(TARGET_OUTPUT_DIR) $(TARGET_OUTPUT_BASENAME)' />
36
-               </ExtraCommands>
37
-           </Target>
38
            <Target title="WIN_vc_x86">
39
                <Option output="../bin/$(TARGET_NAME)/StOutPageFlip" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
40
                <Option object_output="obj/$(TARGET_NAME)/" />
41
@@ -72,11 +39,11 @@
42
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;2' />
43
                </ExtraCommands>
44
            </Target>
45
-           <Target title="WIN_vc_x86_DEBUG">
46
+           <Target title="WIN_vc_AMD64_DEBUG">
47
                <Option output="../bin/$(TARGET_NAME)/StOutPageFlip" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
48
                <Option object_output="obj/$(TARGET_NAME)/" />
49
                <Option type="3" />
50
-               <Option compiler="msvc10" />
51
+               <Option compiler="windows_sdk_x86_64" />
52
                <Option createStaticLib="1" />
53
                <Compiler>
54
                    <Add option="/MDd" />
55
@@ -280,9 +247,8 @@
56
        <Unit filename="StOutPageFlip.h" />
57
        <Unit filename="StOutPageFlip.rc">
58
            <Option compilerVar="WINDRES" />
59
-           <Option target="WIN_gcc_x86" />
60
            <Option target="WIN_vc_x86" />
61
-           <Option target="WIN_vc_x86_DEBUG" />
62
+           <Option target="WIN_vc_AMD64_DEBUG" />
63
            <Option target="WIN_vc_AMD64" />
64
        </Unit>
65
        <Unit filename="StOutPageFlipExt.cpp" />
66
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlip.cpp -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlip.cpp Changed
52
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutPageFlip.h"
25
@@ -582,7 +573,9 @@
26
 }
27
 
28
 void StOutPageFlip::beforeClose() {
29
-    mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
30
+    if(isMovable() && myWasUsed) {
31
+        mySettings->saveInt32Rect(ST_SETTING_WINDOWPOS, StWindow::getWindowedPlacement());
32
+    }
33
     mySettings->saveInt32(ST_SETTING_DEVICE_ID,  myDevice);
34
     mySettings->saveParam(ST_SETTING_ADVANCED,   params.ToShowExtra);
35
     if(myWasUsed) {
36
@@ -797,6 +790,15 @@
37
 #endif
38
 }
39
 
40
+void StOutPageFlip::showCursor(const bool theToShow) {
41
+    StWindow::showCursor(theToShow);
42
+#ifdef _WIN32
43
+    if(!myOutD3d.DxWindow.isNull()) {
44
+        myOutD3d.DxWindow->showCursor(theToShow);
45
+    }
46
+#endif
47
+}
48
+
49
 bool StOutPageFlip::create() {
50
     StWindow::show();
51
 
52
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlip.h -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlip.h Changed
38
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutPageFlip_h_
25
@@ -128,6 +119,12 @@
26
      */
27
     ST_CPPEXPORT virtual void stglDraw();
28
 
29
+    /**
30
+     * Show/Hide mouse cursor.
31
+     * @param theToShow true to show cursor
32
+     */
33
+    ST_CPPEXPORT virtual void showCursor(const bool theToShow);
34
+
35
         protected:
36
 
37
     ST_LOCAL void setupDevice();
38
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlipExt.cpp -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlipExt.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StOutPageFlipExt.h"
25
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlipExt.h -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlipExt.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2007-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutPageFlipExt_h_
25
sview-15_10.tar.gz/StOutPageFlip/StOutPageFlipStrings.h -> sview-15_11.tar.gz/StOutPageFlip/StOutPageFlipStrings.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2007-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOutPageFlipStrings_h_
25
sview-15_10.tar.gz/StOutPageFlip/StQuadBufferCheck.ObjC.mm -> sview-15_11.tar.gz/StOutPageFlip/StQuadBufferCheck.ObjC.mm Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if (defined(__APPLE__))
25
sview-15_10.tar.gz/StOutPageFlip/StQuadBufferCheck.cpp -> sview-15_11.tar.gz/StOutPageFlip/StQuadBufferCheck.cpp Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #include "StQuadBufferCheck.h"
25
sview-15_10.tar.gz/StOutPageFlip/StQuadBufferCheck.h -> sview-15_11.tar.gz/StOutPageFlip/StQuadBufferCheck.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StQuadBufferCheck_h_
25
sview-15_10.tar.gz/StOutPageFlip/StVuzixSDK.h -> sview-15_11.tar.gz/StOutPageFlip/StVuzixSDK.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StOutPageFlip, class providing stereoscopic output for Shutter Glasses displays using StCore toolkit.
4
  * Copyright © 2009 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StOutPageFlip library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StOutPageFlip library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StVuzixSDK_h_
25
sview-15_10.tar.gz/StOutPageFlip/lang/chinese/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/chinese/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # Chinese translation file for StOutPageFlip library
3
 # @author YSC
4
 --------
5
-1000="快门眼镜"
6
-1001="快门眼镜"
7
-1002="Vuzix HMD"
8
-1003="Vuzix HMD"
9
-1102="缓冲类型"
10
-1103="眼镜控制编码"
11
-1120="OpenGL 跟踪"
12
-1122="OpenGL硬件"
13
-1123="Direct3D (全屏)"
14
-1124="Direct3D (未获得)"
15
-1125="Direct3D AMD (全屏)"
16
-1126="Direct3D AMD (未获得)"
17
-1127="Direct3D NVIDIA (全屏)"
18
-1128="Direct3D NVIDIA (失效)"
19
-1130="无编码"
20
-1131="蓝线同步"
21
-1132="白线同步"
22
-1134="空间自动开/关"
23
-2000="sView - 快门输出模式"
24
-2001="版本"
25
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
26
-?3001="OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section)."
27
+1000=快门眼镜
28
+1001=快门眼镜
29
+1002=Vuzix HMD
30
+1003=Vuzix HMD
31
+1102=缓冲类型
32
+1103=眼镜控制编码
33
+1120=OpenGL 跟踪
34
+1122=OpenGL硬件
35
+1123=Direct3D (全屏)
36
+1124=Direct3D (未获得)
37
+1125=Direct3D AMD (全屏)
38
+1126=Direct3D AMD (未获得)
39
+1127=Direct3D NVIDIA (全屏)
40
+1128=Direct3D NVIDIA (失效)
41
+1130=无编码
42
+1131=蓝线同步
43
+1132=白线同步
44
+1134=空间自动开/关
45
+2000=sView - 快门输出模式
46
+2001=版本
47
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
48
+?3001=OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section).
49
sview-15_10.tar.gz/StOutPageFlip/lang/czech/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/czech/StOutPageFlip.lng Changed
8
 
1
@@ -22,5 +22,5 @@
2
 1134=eDimensional auto on/off
3
 2000=sView - modul stereovýstupu pro aktivní závěrkové brýle
4
 2001=версия
5
-2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0
6
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
7
 3001=OpenGL Hardware QuadBuffer není dostupný!
8
sview-15_10.tar.gz/StOutPageFlip/lang/english/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/english/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # English translation file for StOutPageFlip library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Shutter glasses"
6
-1001="Shutter glasses"
7
-1002="Vuzix HMD"
8
-1003="Vuzix HMD"
9
-1102="Quad Buffer type"
10
-1103="Glasses control codes"
11
-1120="OpenGL Emulated"
12
-1122="OpenGL Hardware"
13
-1123="Direct3D (Fullscreen)"
14
-1124="Direct3D (Unavailable)"
15
-1125="Direct3D AMD (Fullscreen)"
16
-1126="Direct3D AMD (Unavailable)"
17
-1127="Direct3D NVIDIA (Fullscreen)"
18
-1128="Direct3D NVIDIA (Disabled)"
19
-1130="No codes"
20
-1131="Blue line sync"
21
-1132="White line sync"
22
-1134="eDimensional auto on/off"
23
-2000="sView - PageFlip Output module"
24
-2001="version"
25
-2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
26
-3001="OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section)."
27
+1000=Shutter glasses
28
+1001=Shutter glasses
29
+1002=Vuzix HMD
30
+1003=Vuzix HMD
31
+1102=Quad Buffer type
32
+1103=Glasses control codes
33
+1120=OpenGL Emulated
34
+1122=OpenGL Hardware
35
+1123=Direct3D (Fullscreen)
36
+1124=Direct3D (Unavailable)
37
+1125=Direct3D AMD (Fullscreen)
38
+1126=Direct3D AMD (Unavailable)
39
+1127=Direct3D NVIDIA (Fullscreen)
40
+1128=Direct3D NVIDIA (Disabled)
41
+1130=No codes
42
+1131=Blue line sync
43
+1132=White line sync
44
+1134=eDimensional auto on/off
45
+2000=sView - PageFlip Output module
46
+2001=version
47
+2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
48
+3001=OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section).
49
sview-15_10.tar.gz/StOutPageFlip/lang/french/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/french/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # French translation file for StOutPageFlip library
3
 # @author gramoun for Kirill Gavrilov
4
 --------
5
-1000="Lunettes Actives"
6
-1001="Lunettes Actives"
7
-1002="Vuzix HMD"
8
-1003="Vuzix HMD"
9
-1102="Quad Buffer type"
10
-1103="Codes de controle des lunettes"
11
-1120="OpenGL Emulé"
12
-1122="OpenGL Matériel"
13
-1123="Direct3D (Fullscreen)"
14
-1124="Direct3D (Unavailable)"
15
-1125="Direct3D AMD (Fullscreen)"
16
-1126="Direct3D AMD (Unavailable)"
17
-1127="Direct3D NVIDIA (Fullscreen)"
18
-1128="Direct3D NVIDIA (Disabled)"
19
-1130="Sans"
20
-1131="Synchro ligne bleue"
21
-1132="Synchro ligne blanche"
22
-1134="eDimensional auto Marche/Arrêt"
23
-2000="sView - PageFlip Output module"
24
-2001="version"
25
-2002="© {0} Kirill Gavrilov <{1}>\nOfficiel site: {2}\n\nThis library is distributed under LGPL3.0"
26
-?3001="OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section)."
27
+1000=Lunettes Actives
28
+1001=Lunettes Actives
29
+1002=Vuzix HMD
30
+1003=Vuzix HMD
31
+1102=Quad Buffer type
32
+1103=Codes de controle des lunettes
33
+1120=OpenGL Emulé
34
+1122=OpenGL Matériel
35
+1123=Direct3D (Fullscreen)
36
+1124=Direct3D (Unavailable)
37
+1125=Direct3D AMD (Fullscreen)
38
+1126=Direct3D AMD (Unavailable)
39
+1127=Direct3D NVIDIA (Fullscreen)
40
+1128=Direct3D NVIDIA (Disabled)
41
+1130=Sans
42
+1131=Synchro ligne bleue
43
+1132=Synchro ligne blanche
44
+1134=eDimensional auto Marche/Arrêt
45
+2000=sView - PageFlip Output module
46
+2001=version
47
+2002=© {0} Kirill Gavrilov <{1}>\nOfficiel site: {2}
48
+?3001=OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section).
49
sview-15_10.tar.gz/StOutPageFlip/lang/german/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/german/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # German translation file for StOutPageFlip library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Shutterbrille"
6
-1001="Shutterbrille"
7
-1002="Vuzix HMD"
8
-1003="Vuzix HMD"
9
-1102="Quad Buffer Typ"
10
-1103="Brille Kontrollcodes"
11
-1120="OpenGL emulierte"
12
-1122="OpenGL hardware"
13
-1123="Direct3D (Vollbild)"
14
-1124="Direct3D (nicht verfügbar)"
15
-1125="Direct3D AMD (Vollbild)"
16
-1126="Direct3D AMD (nicht verfügbar)"
17
-1127="Direct3D NVIDIA (Vollbild)"
18
-1128="Direct3D NVIDIA (behindert)"
19
-1130="keine Codes"
20
-1131="blau Linie sync"
21
-1132="weiß Linie sync"
22
-1134="eDimensional auto on/off"
23
-2000="sView - PageFlip Ausgangsmodul"
24
-2001="Version"
25
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
26
-3001="OpenGL Hardware QuadBuffer nicht verfügbar!\n\nSie können eine andere Quad Buffer versuchen\n(einschließlich OpenGL emulierte in extra Sektion)."
27
+1000=Shutterbrille
28
+1001=Shutterbrille
29
+1002=Vuzix HMD
30
+1003=Vuzix HMD
31
+1102=Quad Buffer Typ
32
+1103=Brille Kontrollcodes
33
+1120=OpenGL emulierte
34
+1122=OpenGL hardware
35
+1123=Direct3D (Vollbild)
36
+1124=Direct3D (nicht verfügbar)
37
+1125=Direct3D AMD (Vollbild)
38
+1126=Direct3D AMD (nicht verfügbar)
39
+1127=Direct3D NVIDIA (Vollbild)
40
+1128=Direct3D NVIDIA (behindert)
41
+1130=keine Codes
42
+1131=blau Linie sync
43
+1132=weiß Linie sync
44
+1134=eDimensional auto on/off
45
+2000=sView - PageFlip Ausgangsmodul
46
+2001=Version
47
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
48
+3001=OpenGL Hardware QuadBuffer nicht verfügbar!\n\nSie können eine andere Quad Buffer versuchen\n(einschließlich OpenGL emulierte in extra Sektion).
49
sview-15_10.tar.gz/StOutPageFlip/lang/korean/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/korean/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # English translation file for StOutPageFlip library
3
 # @author Kirill Gavrilov
4
 --------
5
-?1000="Shutter glasses"
6
-?1001="Shutter glasses"
7
-?1002="Vuzix HMD"
8
-?1003="Vuzix HMD"
9
-?1102="Quad Buffer type"
10
-?1103="Glasses control codes"
11
-?1120="OpenGL Emulated"
12
-?1122="OpenGL Hardware"
13
-?1123="Direct3D (Fullscreen)"
14
-?1124="Direct3D (Unavailable)"
15
-?1125="Direct3D AMD (Fullscreen)"
16
-?1126="Direct3D AMD (Unavailable)"
17
-?1127="Direct3D NVIDIA (Fullscreen)"
18
-?1128="Direct3D NVIDIA (Disabled)"
19
-?1130="No codes"
20
-?1131="Blue line sync"
21
-?1132="White line sync"
22
-?1134="eDimensional auto on/off"
23
-?2000="sView - PageFlip Output module"
24
-?2001="version"
25
-?2002="© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}\n\nThis library is distributed under LGPL3.0"
26
-?3001="OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section)."
27
+?1000=Shutter glasses
28
+?1001=Shutter glasses
29
+?1002=Vuzix HMD
30
+?1003=Vuzix HMD
31
+?1102=Quad Buffer type
32
+?1103=Glasses control codes
33
+?1120=OpenGL Emulated
34
+?1122=OpenGL Hardware
35
+?1123=Direct3D (Fullscreen)
36
+?1124=Direct3D (Unavailable)
37
+?1125=Direct3D AMD (Fullscreen)
38
+?1126=Direct3D AMD (Unavailable)
39
+?1127=Direct3D NVIDIA (Fullscreen)
40
+?1128=Direct3D NVIDIA (Disabled)
41
+?1130=No codes
42
+?1131=Blue line sync
43
+?1132=White line sync
44
+?1134=eDimensional auto on/off
45
+?2000=sView - PageFlip Output module
46
+?2001=version
47
+?2002=© {0} Kirill Gavrilov <{1}>\nOfficial site: {2}
48
+?3001=OpenGL Hardware QuadBuffer is unavailable!\n\nYou can try another Quad Buffer type\n(including OpenGL emulated in Extra section).
49
sview-15_10.tar.gz/StOutPageFlip/lang/russian/StOutPageFlip.lng -> sview-15_11.tar.gz/StOutPageFlip/lang/russian/StOutPageFlip.lng Changed
49
 
1
@@ -1,25 +1,25 @@
2
 # Russian translation file for StOutPageFlip library
3
 # @author Kirill Gavrilov
4
 --------
5
-1000="Затворные очки"
6
-1001="Затворные очки"
7
-1002="Vuzix HMD"
8
-1003="Vuzix HMD"
9
-1102="Тип Квадробуфера"
10
-1103="Управление очками"
11
-1120="OpenGL эмуляция"
12
-1122="OpenGL аппаратный"
13
-1123="Direct3D (Fullscreen)"
14
-1124="Direct3D (Unavailable)"
15
-1125="Direct3D AMD (Fullscreen)"
16
-1126="Direct3D AMD (Unavailable)"
17
-1127="Direct3D NVIDIA (Fullscreen)"
18
-1128="Direct3D NVIDIA (Disabled)"
19
-1130="Без контроля"
20
-1131="Голубая линия"
21
-1132="Белая линия"
22
-1134="eDimensional авто вкл/выкл"
23
-2000="sView - модуль стереовывода для завторных очков"
24
-2001="версия"
25
-2002="© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}\n\nБиблиотека распространяется на условиях LGPL3.0"
26
-3001="OpenGL Hardware QuadBuffer не доступен!\n\nМожно попробовать другой тип квадробуфера в меню\n(включая эмулированный OpenGL в расширенном режиме)."
27
+1000=Затворные очки
28
+1001=Затворные очки
29
+1002=Vuzix HMD
30
+1003=Vuzix HMD
31
+1102=Тип Квадробуфера
32
+1103=Управление очками
33
+1120=OpenGL эмуляция
34
+1122=OpenGL аппаратный
35
+1123=Direct3D (Fullscreen)
36
+1124=Direct3D (Unavailable)
37
+1125=Direct3D AMD (Fullscreen)
38
+1126=Direct3D AMD (Unavailable)
39
+1127=Direct3D NVIDIA (Fullscreen)
40
+1128=Direct3D NVIDIA (Disabled)
41
+1130=Без контроля
42
+1131=Голубая линия
43
+1132=Белая линия
44
+1134=eDimensional авто вкл/выкл
45
+2000=sView - модуль стереовывода для завторных очков
46
+2001=версия
47
+2002=© {0} Гаврилов Кирилл <{1}>\nОфициальный сайт: {2}
48
+3001=OpenGL Hardware QuadBuffer не доступен!\n\nМожно попробовать другой тип квадробуфера в меню\n(включая эмулированный OpenGL в расширенном режиме).
49
sview-15_10.tar.gz/StShared/StAVFrame.cpp -> sview-15_11.tar.gz/StShared/StAVFrame.cpp Changed
71
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2013-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -8,6 +8,8 @@
9
 
10
 #include <StAV/StAVFrame.h>
11
 
12
+#include <StAV/StAVImage.h>
13
+
14
 StAVFrame::StAVFrame()
15
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
16
 : Frame(av_frame_alloc())
17
@@ -49,3 +51,53 @@
18
     thePixFmt = theCodecCtx->pix_fmt;
19
 #endif
20
 }
21
+
22
+StAVFrameCounter::StAVFrameCounter()
23
+: myFrame(NULL),
24
+  myIsProxy(false) {
25
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
26
+    myFrame = av_frame_alloc();
27
+#endif
28
+}
29
+
30
+StAVFrameCounter::~StAVFrameCounter() {
31
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
32
+    av_frame_free(&myFrame);
33
+#endif
34
+}
35
+
36
+void StAVFrameCounter::createReference(StHandle<StBufferCounter>& theOther) const {
37
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
38
+    StHandle<StAVFrameCounter> anAvRef = StHandle<StAVFrameCounter>::downcast(theOther);
39
+    if(anAvRef.isNull()) {
40
+        anAvRef = new StAVFrameCounter();
41
+        theOther = anAvRef;
42
+    }
43
+
44
+    av_frame_unref(anAvRef->myFrame);
45
+    if(myIsProxy) {
46
+        // just steal the reference
47
+        av_frame_move_ref(anAvRef->myFrame, myFrame);
48
+    } else {
49
+        av_frame_ref(anAvRef->myFrame, myFrame);
50
+    }
51
+#else
52
+    theOther.nullify();
53
+#endif
54
+}
55
+
56
+void StAVFrameCounter::releaseReference() {
57
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
58
+    av_frame_unref(myFrame);
59
+#endif
60
+}
61
+
62
+void StAVFrameCounter::moveReferenceFrom(AVFrame* theFrame) {
63
+    myIsProxy = true;
64
+#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
65
+    av_frame_unref(myFrame);
66
+    av_frame_move_ref(myFrame, theFrame);
67
+#else
68
+    (void )theFrame;
69
+#endif
70
+}
71
sview-15_10.tar.gz/StShared/StAVImage.cpp -> sview-15_11.tar.gz/StShared/StAVImage.cpp Changed
260
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -22,24 +22,13 @@
9
 : myImageFormat(NULL),
10
   myFormatCtx(NULL),
11
   myCodecCtx(NULL),
12
-  myCodec(NULL),
13
-  myFrame(NULL) {
14
+  myCodec(NULL) {
15
     StAVImage::init();
16
     myImageFormat = av_find_input_format("image2");
17
-#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
18
-    myFrame = av_frame_alloc();
19
-#else
20
-    myFrame = avcodec_alloc_frame();
21
-#endif
22
 }
23
 
24
 StAVImage::~StAVImage() {
25
     close();
26
-#if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
27
-    av_frame_free(&myFrame);
28
-#else
29
-    av_free(myFrame);
30
-#endif
31
 }
32
 
33
 int StAVImage::getAVPixelFormat(const StImage& theImage) {
34
@@ -180,6 +169,12 @@
35
 }
36
 
37
 void StAVImage::close() {
38
+    myMetadata.clear();
39
+    closeAvCtx();
40
+}
41
+
42
+void StAVImage::closeAvCtx() {
43
+    myFrame.reset();
44
     if(myCodec != NULL && myCodecCtx != NULL) {
45
         avcodec_close(myCodecCtx); // close VIDEO codec
46
     }
47
@@ -208,6 +203,7 @@
48
     StImage::nullify();
49
     setState();
50
     close();
51
+    myMetadata.clear();
52
 
53
     switch(theImageType) {
54
         case ST_TYPE_PNG:
55
@@ -221,6 +217,15 @@
56
             myCodec = avcodec_find_decoder_by_name("mjpeg");
57
             break;
58
         }
59
+        case ST_TYPE_EXR: {
60
+            myCodec = avcodec_find_decoder_by_name("exr");
61
+            break;
62
+        }
63
+        case ST_TYPE_WEBP:
64
+        case ST_TYPE_WEBPLL: {
65
+            myCodec = avcodec_find_decoder_by_name("webp");
66
+            break;
67
+        }
68
         default: {
69
             break;
70
         }
71
@@ -326,9 +331,9 @@
72
     // decode one frame
73
     int isFrameFinished = 0;
74
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 23, 0))
75
-    avcodec_decode_video2(myCodecCtx, myFrame, &isFrameFinished, anAvPkt.getAVpkt());
76
+    avcodec_decode_video2(myCodecCtx, myFrame.Frame, &isFrameFinished, anAvPkt.getAVpkt());
77
 #else
78
-    avcodec_decode_video(myCodecCtx, myFrame, &isFrameFinished,
79
+    avcodec_decode_video(myCodecCtx, myFrame.Frame, &isFrameFinished,
80
                          theDataPtr, theDataSize);
81
 #endif
82
 
83
@@ -362,7 +367,7 @@
84
 
85
 #ifdef ST_AV_NEWSTEREO
86
     // currently it is unlikelly... but maybe in future?
87
-    AVFrameSideData* aSideData = av_frame_get_side_data(myFrame, AV_FRAME_DATA_STEREO3D);
88
+    AVFrameSideData* aSideData = av_frame_get_side_data(myFrame.Frame, AV_FRAME_DATA_STEREO3D);
89
     if(aSideData != NULL) {
90
         AVStereo3D* aStereo = (AVStereo3D* )aSideData->data;
91
         mySrcFormat = stAV::stereo3dAvToSt(aStereo->type);
92
@@ -374,37 +379,70 @@
93
     }
94
 #endif
95
 
96
+    // it is unlikely that there would be any metadata from format...
97
+    // but lets try
98
+    if(myFormatCtx != NULL) {
99
+        for(stAV::meta::Tag* aTag = stAV::meta::findTag(myFormatCtx->metadata, "", NULL, stAV::meta::SEARCH_IGNORE_SUFFIX);
100
+            aTag != NULL;
101
+            aTag = stAV::meta::findTag(myFormatCtx->metadata, "", aTag, stAV::meta::SEARCH_IGNORE_SUFFIX)) {
102
+            myMetadata.add(StDictEntry(aTag->key, aTag->value));
103
+        }
104
+        for(stAV::meta::Tag* aTag = stAV::meta::findTag(myFormatCtx->streams[0]->metadata, "", NULL, stAV::meta::SEARCH_IGNORE_SUFFIX);
105
+            aTag != NULL;
106
+            aTag = stAV::meta::findTag(myFormatCtx->streams[0]->metadata, "", aTag, stAV::meta::SEARCH_IGNORE_SUFFIX)) {
107
+            myMetadata.add(StDictEntry(aTag->key, aTag->value));
108
+        }
109
+    }
110
+
111
+    // collect metadata from the frame
112
+    stAV::meta::Dict* aFrameMetadata = stAV::meta::getFrameMetadata(myFrame.Frame);
113
+    for(stAV::meta::Tag* aTag = stAV::meta::findTag(aFrameMetadata, "", NULL, stAV::meta::SEARCH_IGNORE_SUFFIX);
114
+        aTag != NULL;
115
+        aTag = stAV::meta::findTag(aFrameMetadata, "", aTag, stAV::meta::SEARCH_IGNORE_SUFFIX)) {
116
+        myMetadata.add(StDictEntry(aTag->key, aTag->value));
117
+    }
118
+
119
     stAV::dimYUV aDimsYUV;
120
     if(myCodecCtx->pix_fmt == stAV::PIX_FMT::RGB24) {
121
         setColorModel(StImage::ImgColor_RGB);
122
-        changePlane(0).initWrapper(StImagePlane::ImgRGB, myFrame->data[0],
123
+        changePlane(0).initWrapper(StImagePlane::ImgRGB, myFrame.getPlane(0),
124
                                    myCodecCtx->width, myCodecCtx->height,
125
-                                   myFrame->linesize[0]);
126
+                                   myFrame.getLineSize(0));
127
     } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::BGR24) {
128
         setColorModel(StImage::ImgColor_RGB);
129
-        changePlane(0).initWrapper(StImagePlane::ImgBGR, myFrame->data[0],
130
+        changePlane(0).initWrapper(StImagePlane::ImgBGR, myFrame.getPlane(0),
131
                                    myCodecCtx->width, myCodecCtx->height,
132
-                                   myFrame->linesize[0]);
133
+                                   myFrame.getLineSize(0));
134
     } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::RGBA32) {
135
         setColorModel(StImage::ImgColor_RGBA);
136
-        changePlane(0).initWrapper(StImagePlane::ImgRGBA, myFrame->data[0],
137
+        changePlane(0).initWrapper(StImagePlane::ImgRGBA, myFrame.getPlane(0),
138
                                    myCodecCtx->width, myCodecCtx->height,
139
-                                   myFrame->linesize[0]);
140
+                                   myFrame.getLineSize(0));
141
     } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::BGRA32) {
142
         setColorModel(StImage::ImgColor_RGBA);
143
-        changePlane(0).initWrapper(StImagePlane::ImgBGRA, myFrame->data[0],
144
+        changePlane(0).initWrapper(StImagePlane::ImgBGRA, myFrame.getPlane(0),
145
                                    myCodecCtx->width, myCodecCtx->height,
146
-                                   myFrame->linesize[0]);
147
+                                   myFrame.getLineSize(0));
148
     } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::GRAY8) {
149
         setColorModel(StImage::ImgColor_GRAY);
150
-        changePlane(0).initWrapper(StImagePlane::ImgGray, myFrame->data[0],
151
+        changePlane(0).initWrapper(StImagePlane::ImgGray, myFrame.getPlane(0),
152
                                    myCodecCtx->width, myCodecCtx->height,
153
-                                   myFrame->linesize[0]);
154
+                                   myFrame.getLineSize(0));
155
     } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::GRAY16) {
156
         setColorModel(StImage::ImgColor_GRAY);
157
-        changePlane(0).initWrapper(StImagePlane::ImgGray16, myFrame->data[0],
158
+        changePlane(0).initWrapper(StImagePlane::ImgGray16, myFrame.getPlane(0),
159
                                    myCodecCtx->width, myCodecCtx->height,
160
-                                   myFrame->linesize[0]);
161
+                                   myFrame.getLineSize(0));
162
+    } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::RGB48) {
163
+        setColorModel(StImage::ImgColor_RGB);
164
+        changePlane(0).initWrapper(StImagePlane::ImgRGB48, myFrame.getPlane(0),
165
+                                   myCodecCtx->width, myCodecCtx->height,
166
+                                   myFrame.getLineSize(0));
167
+    } else if(myCodecCtx->pix_fmt == stAV::PIX_FMT::RGBA64) {
168
+        setColorModel(StImage::ImgColor_RGBA);
169
+        changePlane(0).initWrapper(StImagePlane::ImgRGBA64, myFrame.getPlane(0),
170
+                                   myCodecCtx->width, myCodecCtx->height,
171
+                                   myFrame.getLineSize(0));
172
     } else if(stAV::isFormatYUVPlanar(myCodecCtx, aDimsYUV)) {
173
     #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 29, 0))
174
         if(myCodecCtx->color_range == AVCOL_RANGE_JPEG) {
175
@@ -424,12 +462,12 @@
176
             aPlaneFrmt = StImagePlane::ImgGray16;
177
         }
178
 
179
-        changePlane(0).initWrapper(aPlaneFrmt, myFrame->data[0],
180
-                                   size_t(aDimsYUV.widthY), size_t(aDimsYUV.heightY), myFrame->linesize[0]);
181
-        changePlane(1).initWrapper(aPlaneFrmt, myFrame->data[1],
182
-                                   size_t(aDimsYUV.widthU), size_t(aDimsYUV.heightU), myFrame->linesize[1]);
183
-        changePlane(2).initWrapper(aPlaneFrmt, myFrame->data[2],
184
-                                   size_t(aDimsYUV.widthV), size_t(aDimsYUV.heightV), myFrame->linesize[2]);
185
+        changePlane(0).initWrapper(aPlaneFrmt, myFrame.getPlane(0),
186
+                                   size_t(aDimsYUV.widthY), size_t(aDimsYUV.heightY), myFrame.getLineSize(0));
187
+        changePlane(1).initWrapper(aPlaneFrmt, myFrame.getPlane(1),
188
+                                   size_t(aDimsYUV.widthU), size_t(aDimsYUV.heightU), myFrame.getLineSize(1));
189
+        changePlane(2).initWrapper(aPlaneFrmt, myFrame.getPlane(2),
190
+                                   size_t(aDimsYUV.widthV), size_t(aDimsYUV.heightV), myFrame.getLineSize(2));
191
     } else {
192
         ///ST_DEBUG_LOG("StAVImage, perform conversion from Pixel format '" + avcodec_get_pix_fmt_name(myCodecCtx->pix_fmt) + "' to RGB");
193
         // initialize software scaler/converter
194
@@ -453,9 +491,11 @@
195
         rgbLinesize[0] = (int )changePlane(0).getSizeRowBytes();
196
 
197
         sws_scale(pToRgbCtx,
198
-                  myFrame->data, myFrame->linesize,
199
+                  myFrame.Frame->data, myFrame.Frame->linesize,
200
                   0, myCodecCtx->height,
201
                   rgbData, rgbLinesize);
202
+        // reset original data
203
+        closeAvCtx();
204
 
205
         sws_freeContext(pToRgbCtx);
206
     }
207
@@ -536,7 +576,7 @@
208
                 anImage.initWrapper(*this);
209
             } else {
210
                 // convert to compatible pixel format
211
-                PixelFormat aPFrmtTarget = stAV::PIX_FMT::YUVJ422P;
212
+                PixelFormat aPFrmtTarget = aPFormatAV == stAV::PIX_FMT::YUV420P ? stAV::PIX_FMT::YUVJ420P : stAV::PIX_FMT::YUVJ422P;
213
                 anImage.setColorModel(StImage::ImgColor_YUV);
214
                 anImage.setColorScale(StImage::ImgScale_Mpeg);
215
                 anImage.changePlane(0).initTrash(StImagePlane::ImgGray, getSizeX(), getSizeY(), getAligned(getSizeX()));
216
@@ -585,15 +625,21 @@
217
     }
218
 
219
     // wrap own data into AVFrame
220
-    fillPointersAV(anImage, myFrame->data, myFrame->linesize);
221
+    myFrame.Frame->format = myCodecCtx->pix_fmt;
222
+    myFrame.Frame->width  = myCodecCtx->width;
223
+    myFrame.Frame->height = myCodecCtx->height;
224
+    fillPointersAV(anImage, myFrame.Frame->data, myFrame.Frame->linesize);
225
 
226
 #ifdef ST_AV_NEWSTEREO
227
-    // currently it is unlikelly... but maybe in future?
228
-    AVStereo3DType anAvStereoType = stAV::stereo3dStToAv(theSrcFormat);
229
+    bool isReversed = false;
230
+    AVStereo3DType anAvStereoType = stAV::stereo3dStToAv(theSrcFormat, isReversed);
231
     if(anAvStereoType != (AVStereo3DType )-1) {
232
-        AVStereo3D* aStereo = av_stereo3d_create_side_data(myFrame);
233
+        AVStereo3D* aStereo = av_stereo3d_create_side_data(myFrame.Frame);
234
         if(aStereo != NULL) {
235
             aStereo->type = anAvStereoType;
236
+            if(isReversed) {
237
+                aStereo->flags |= AV_STEREO3D_FLAG_INVERT;
238
+            }
239
         }
240
     }
241
 #endif
242
@@ -615,14 +661,12 @@
243
     aPacket.getAVpkt()->size = aBuffSize;
244
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 2, 100))
245
     int isGotPacket = 0;
246
-    int anEncSize   = avcodec_encode_video2(myCodecCtx, aPacket.getAVpkt(), myFrame, &isGotPacket);
247
-    if(anEncSize == 0 && isGotPacket != 0 && myCodecCtx->coded_frame) {
248
-        myCodecCtx->coded_frame->pts       = aPacket.getPts();
249
-        myCodecCtx->coded_frame->key_frame = aPacket.isKeyFrame() ? 1 : 0;
250
+    int anEncSize   = avcodec_encode_video2(myCodecCtx, aPacket.getAVpkt(), myFrame.Frame, &isGotPacket);
251
+    if(anEncSize == 0 && isGotPacket != 0) {
252
         anEncSize = aPacket.getSize();
253
     }
254
 #else
255
-    int anEncSize = avcodec_encode_video(myCodecCtx, aPacket.changeData(), aPacket.getSize(), myFrame);
256
+    int anEncSize = avcodec_encode_video(myCodecCtx, aPacket.changeData(), aPacket.getSize(), myFrame.Frame);
257
 #endif
258
     if(anEncSize <= 0) {
259
         setState("AVCodec library, fail to encode the image");
260
sview-15_10.tar.gz/StShared/StCondition.cpp -> sview-15_11.tar.gz/StShared/StCondition.cpp Changed
110
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -16,7 +16,27 @@
9
 #endif
10
 
11
 #include <StThreads/StCondition.h>
12
-#include <StThreads/StTimer.h> // for ST_HAVE_MONOTONIC_CLOCK
13
+#include <StThreads/StTimer.h>
14
+
15
+namespace {
16
+
17
+#ifndef _WIN32
18
+    /**
19
+     * clock_gettime() wrapper.
20
+     */
21
+    inline void stGetRealTime(struct timespec& theTime) {
22
+    #if defined(__APPLE__)
23
+        struct timeval aTime;
24
+        gettimeofday(&aTime, NULL);
25
+        theTime.tv_sec  = aTime.tv_sec;
26
+        theTime.tv_nsec = aTime.tv_usec * 1000;
27
+    #else
28
+        clock_gettime(CLOCK_REALTIME, &theTime);
29
+    #endif
30
+    }
31
+#endif
32
+
33
+}
34
 
35
 StCondition::StCondition()
36
 #ifdef _WIN32
37
@@ -93,18 +113,17 @@
38
     bool isSignalled = true;
39
     pthread_mutex_lock(&myMutex);
40
     if(!myFlag) {
41
-        StTimer::stTimeCounter_t aNow;
42
-        struct timespec          aTimeout;
43
-        StTimer::fillCounter(aNow);
44
-        size_t aSeconds      = (theTimeMilliseconds / 1000);
45
-        size_t aMicroseconds = (theTimeMilliseconds - aSeconds * 1000) * 1000;
46
-    #if defined(ST_HAVE_MONOTONIC_CLOCK)
47
-        aTimeout.tv_sec  = aNow.tv_sec         + (time_t )aSeconds;
48
-        aTimeout.tv_nsec = aNow.tv_nsec        + (long   )aMicroseconds * 1000;
49
-    #else
50
-        aTimeout.tv_sec  = aNow.tv_sec         + (time_t )aSeconds;
51
-        aTimeout.tv_nsec = aNow.tv_usec * 1000 + (long   )aMicroseconds * 1000;
52
-    #endif
53
+        struct timespec aNow;
54
+        struct timespec aTimeout;
55
+        stGetRealTime(aNow);
56
+        aTimeout.tv_sec  = (theTimeMilliseconds / 1000);
57
+        aTimeout.tv_nsec = (theTimeMilliseconds - aTimeout.tv_sec * 1000) * 1000000;
58
+        if(aTimeout.tv_nsec > 1000000000) {
59
+            aTimeout.tv_sec  += 1;
60
+            aTimeout.tv_nsec -= 1000000000;
61
+        }
62
+        aTimeout.tv_sec  += aNow.tv_sec;
63
+        aTimeout.tv_nsec += aNow.tv_nsec;
64
         isSignalled = (pthread_cond_timedwait(&myCond, &myMutex, &aTimeout) != ETIMEDOUT);
65
     }
66
     pthread_mutex_unlock(&myMutex);
67
@@ -119,17 +138,11 @@
68
     bool isSignalled = true;
69
     pthread_mutex_lock(&myMutex);
70
     if(!myFlag) {
71
-        StTimer::stTimeCounter_t aNow;
72
-        struct timespec          aTimeout;
73
-        StTimer::fillCounter(aNow);
74
-        // TODO (Kirill Gavrilov) which values must be here and need we this block here?
75
-    #if defined(ST_HAVE_MONOTONIC_CLOCK)
76
-        aTimeout.tv_sec  = aNow.tv_sec;
77
-        aTimeout.tv_nsec = aNow.tv_nsec        + 100;
78
-    #else
79
+        struct timespec aNow;
80
+        struct timespec aTimeout;
81
+        stGetRealTime(aNow);
82
         aTimeout.tv_sec  = aNow.tv_sec;
83
-        aTimeout.tv_nsec = aNow.tv_usec * 1000 + 100;
84
-    #endif
85
+        aTimeout.tv_nsec = aNow.tv_nsec + 100;
86
         isSignalled = (pthread_cond_timedwait(&myCond, &myMutex, &aTimeout) != ETIMEDOUT);
87
     }
88
     pthread_mutex_unlock(&myMutex);
89
@@ -146,16 +159,11 @@
90
     pthread_mutex_lock(&myMutex);
91
     bool wasSignalled = myFlag;
92
     if(!myFlag) {
93
-        StTimer::stTimeCounter_t aNow;
94
-        struct timespec          aTimeout;
95
-        StTimer::fillCounter(aNow);
96
-    #if defined(ST_HAVE_MONOTONIC_CLOCK)
97
-        aTimeout.tv_sec  = aNow.tv_sec;
98
-        aTimeout.tv_nsec = aNow.tv_nsec        + 100;
99
-    #else
100
+        struct timespec aNow;
101
+        struct timespec aTimeout;
102
+        stGetRealTime(aNow);
103
         aTimeout.tv_sec  = aNow.tv_sec;
104
-        aTimeout.tv_nsec = aNow.tv_usec * 1000 + 100;
105
-    #endif
106
+        aTimeout.tv_nsec = aNow.tv_nsec + 100;
107
         wasSignalled = (pthread_cond_timedwait(&myCond, &myMutex, &aTimeout) != ETIMEDOUT);
108
     }
109
     myFlag = false;
110
sview-15_10.tar.gz/StShared/StFileNode2.cpp -> sview-15_11.tar.gz/StShared/StFileNode2.cpp Changed
10
 
1
@@ -112,7 +112,7 @@
2
     }
3
     return false;
4
 #elif defined(__ANDROID__)
5
-    bool ST_NOT_IMPLEMENTED_FOR_ANDROID = true;
6
+    //bool ST_NOT_IMPLEMENTED_FOR_ANDROID = true;
7
     return false;
8
 #elif defined(__linux__)
9
     if(!StMessageBox::initGlobals()) {
10
sview-15_10.tar.gz/StShared/StGLTexture.cpp -> sview-15_11.tar.gz/StShared/StGLTexture.cpp Changed
87
 
1
@@ -45,6 +45,13 @@
2
             theInternalFormat = GL_RGBA8;
3
         #endif
4
             return true;
5
+        case StImagePlane::ImgRGBA64:
6
+        #if defined(GL_ES_VERSION_2_0)
7
+            theInternalFormat = GL_RGBA;
8
+        #else
9
+            theInternalFormat = GL_RGBA16;
10
+        #endif
11
+            return true;
12
         case StImagePlane::ImgRGB:
13
         case StImagePlane::ImgBGR:
14
         case StImagePlane::ImgRGB32:
15
@@ -55,6 +62,13 @@
16
             theInternalFormat = GL_RGB8;
17
         #endif
18
             return true;
19
+        case StImagePlane::ImgRGB48:
20
+        #if defined(GL_ES_VERSION_2_0)
21
+            theInternalFormat = GL_RGB;
22
+        #else
23
+            theInternalFormat = GL_RGB16;
24
+        #endif
25
+            return true;
26
         case StImagePlane::ImgGrayF:
27
         #if defined(GL_ES_VERSION_2_0)
28
             theInternalFormat = GL_ALPHA;
29
@@ -124,12 +138,22 @@
30
             return true;
31
         #endif
32
         }
33
+        case StImagePlane::ImgRGB48: {
34
+            thePixelFormat = GL_RGB;
35
+            theDataType    = GL_UNSIGNED_SHORT;
36
+            return true;
37
+        }
38
         case StImagePlane::ImgRGBA:
39
         case StImagePlane::ImgRGB32: {
40
             thePixelFormat = GL_RGBA;
41
             theDataType = GL_UNSIGNED_BYTE;
42
             return true;
43
         }
44
+        case StImagePlane::ImgRGBA64: {
45
+            thePixelFormat = GL_RGBA;
46
+            theDataType    = GL_UNSIGNED_SHORT;
47
+            return true;
48
+        }
49
         case StImagePlane::ImgBGRA:
50
         case StImagePlane::ImgBGR32: {
51
         #if defined(GL_ES_VERSION_2_0)
52
@@ -441,14 +465,10 @@
53
 
54
     GLint anInternalFormat = myTextFormat;
55
 #if defined(GL_ES_VERSION_2_0)
56
-    // sized formats are not supported here
57
-    if(anInternalFormat == GL_RGBA8) {
58
-        anInternalFormat = GL_RGBA;
59
-    } else if(anInternalFormat == GL_RGB8) {
60
-        anInternalFormat = GL_RGB;
61
-    } else if(anInternalFormat == GL_ALPHA8) {
62
-        anInternalFormat = GL_ALPHA;
63
-    }
64
+    //if(!theCtx.isGlGreaterEqual(3, 0)) {
65
+        // sized formats are not supported here
66
+        anInternalFormat = theDataFormat;
67
+    //}
68
 #endif
69
 
70
     if(myTarget == GL_TEXTURE_CUBE_MAP) {
71
@@ -473,13 +493,13 @@
72
     GLenum anErr = theCtx.core20fwd->glGetError();
73
     if(anErr != GL_NO_ERROR) {
74
         ST_ERROR_LOG("Creation texture with size (" + mySizeX + " x "+ mySizeY
75
-                   + " @" + formatInternalFormat(anInternalFormat) + " with data " + formatInternalFormat(theDataFormat) + ") FAILED: " + theCtx.stglErrorToString(anErr) + "!");
76
+                   + " @" + formatInternalFormat(myTextFormat) + " with data " + formatInternalFormat(theDataFormat) + ") FAILED: " + theCtx.stglErrorToString(anErr) + "!");
77
         release(theCtx);
78
         return false;
79
     }
80
 #ifdef ST_DEBUG_TEXTURES
81
     ST_DEBUG_LOG("Created StGLTexture " + mySizeX + " x "+ mySizeY
82
-               + " (format " + formatInternalFormat(anInternalFormat) + ')');
83
+               + " (format " + formatInternalFormat(myTextFormat) + ')');
84
 #endif
85
 
86
 #else
87
sview-15_10.tar.gz/StShared/StGLTextureData.cpp -> sview-15_11.tar.gz/StShared/StGLTextureData.cpp Changed
245
 
1
@@ -30,6 +30,7 @@
2
 }
3
 
4
 void StGLTextureData::reset() {
5
+    myDataPair.nullify();
6
     myDataL.nullify();
7
     myDataR.nullify();
8
     if(myDataPtr != NULL) {
9
@@ -325,6 +326,28 @@
10
     return thePlane.getSizeX() / theCoeffX == thePlane.getSizeY() / theCoeffY;
11
 }
12
 
13
+void StGLTextureData::copyProps(const StImage& theDataL,
14
+                                const StImage& theDataR) {
15
+    myDataPair.setColorModel(theDataL.getColorModel());
16
+    myDataPair.setColorScale(theDataL.getColorScale());
17
+    myDataPair.setPixelRatio(theDataL.getPixelRatio());
18
+    myDataL.setColorModel(theDataL.getColorModel());
19
+    myDataL.setColorScale(theDataL.getColorScale());
20
+    myDataL.setPixelRatio(theDataL.getPixelRatio());
21
+    myDataR.setColorModel(theDataR.isNull() ? theDataL.getColorModel() : theDataR.getColorModel());
22
+    myDataR.setColorScale(theDataR.isNull() ? theDataL.getColorScale() : theDataR.getColorScale());
23
+    myDataR.setPixelRatio(theDataR.isNull() ? theDataL.getPixelRatio() : theDataR.getPixelRatio());
24
+}
25
+
26
+inline bool canCopyReference(const StImage& theData) {
27
+    if(theData.isNull()) {
28
+        return true;
29
+    }
30
+
31
+    return !theData.getBufferCounter().isNull()
32
+        &&  theData.isTopDown();
33
+}
34
+
35
 void StGLTextureData::updateData(const StImage&                  theDataL,
36
                                  const StImage&                  theDataR,
37
                                  const StHandle<StStereoParams>& theStParams,
38
@@ -335,27 +358,138 @@
39
     myStParams  = theStParams;
40
     myPts       = thePts;
41
     mySrcFormat = theFormat != StFormat_AUTO ? theFormat : StFormat_Mono;
42
-    myCubemapFormat = theCubemap;
43
 
44
     // reset fill texture state
45
     myFillRows = myFillFromRow = 0;
46
 
47
+    if(canCopyReference(theDataL)
48
+    && canCopyReference(theDataR)) {
49
+        bool toCopy = false;
50
+        switch(mySrcFormat) {
51
+            case StFormat_SideBySide_LR:
52
+            case StFormat_SideBySide_RL: {
53
+                reset();
54
+                copyProps(theDataL, theDataR);
55
+                StImage& aDataL = (mySrcFormat == StFormat_SideBySide_LR)
56
+                                ? myDataL : myDataR;
57
+                StImage& aDataR = (mySrcFormat == StFormat_SideBySide_LR)
58
+                                ? myDataR : myDataL;
59
+                myDataPair.initReference(theDataL);
60
+                for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
61
+                    const StImagePlane& aFromPlane = myDataPair.getPlane(aPlaneId);
62
+                    if(aFromPlane.isNull()) {
63
+                        continue;
64
+                    }
65
+                    const size_t aSizeX = aFromPlane.getSizeX() / 2;
66
+                    aDataL.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
67
+                                                             aFromPlane.accessData(0, 0),
68
+                                                             aSizeX, aFromPlane.getSizeY(),
69
+                                                             aFromPlane.getSizeRowBytes());
70
+                    aDataR.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
71
+                                                             aFromPlane.accessData(0, aSizeX),
72
+                                                             aSizeX, aFromPlane.getSizeY(),
73
+                                                             aFromPlane.getSizeRowBytes());
74
+                }
75
+                break;
76
+            }
77
+            case StFormat_TopBottom_LR:
78
+            case StFormat_TopBottom_RL: {
79
+                reset();
80
+                copyProps(theDataL, theDataR);
81
+                StImage& aDataL = (mySrcFormat == StFormat_TopBottom_LR)
82
+                                ? myDataL : myDataR;
83
+                StImage& aDataR = (mySrcFormat == StFormat_TopBottom_LR)
84
+                                ? myDataR : myDataL;
85
+                myDataPair.initReference(theDataL);
86
+                for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
87
+                    const StImagePlane& aFromPlane = myDataPair.getPlane(aPlaneId);
88
+                    if(aFromPlane.isNull()) {
89
+                        continue;
90
+                    }
91
+                    const size_t aSizeY = aFromPlane.getSizeY() / 2;
92
+                    aDataL.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
93
+                                                             aFromPlane.accessData(0, 0),
94
+                                                             aFromPlane.getSizeX(), aSizeY,
95
+                                                             aFromPlane.getSizeRowBytes());
96
+                    aDataR.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
97
+                                                             aFromPlane.accessData(aSizeY, 0),
98
+                                                             aFromPlane.getSizeX(), aSizeY,
99
+                                                             aFromPlane.getSizeRowBytes());
100
+                }
101
+                break;
102
+            }
103
+            case StFormat_Rows: {
104
+                reset();
105
+                copyProps(theDataL, theDataR);
106
+                myDataL.setPixelRatio(theDataL.getPixelRatio() * 0.5f);
107
+                myDataR.setPixelRatio(theDataL.getPixelRatio() * 0.5f);
108
+                StImage& aDataL = myDataL;
109
+                StImage& aDataR = myDataR;
110
+                myDataPair.initReference(theDataL);
111
+                for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
112
+                    const StImagePlane& aFromPlane = myDataPair.getPlane(aPlaneId);
113
+                    if(aFromPlane.isNull()) {
114
+                        continue;
115
+                    }
116
+                    const size_t aSizeY = aFromPlane.getSizeY() / 2;
117
+                    aDataL.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
118
+                                                             aFromPlane.accessData(0, 0),
119
+                                                             aFromPlane.getSizeX(), aSizeY,
120
+                                                             aFromPlane.getSizeRowBytes() * 2);
121
+                    aDataR.changePlane(aPlaneId).initWrapper(aFromPlane.getFormat(),
122
+                                                             aFromPlane.accessData(1, 0),
123
+                                                             aFromPlane.getSizeX(), aSizeY,
124
+                                                             aFromPlane.getSizeRowBytes() * 2);
125
+                }
126
+                break;
127
+            }
128
+            case StFormat_Columns:
129
+            case StFormat_Tiled4x: {
130
+                toCopy = true;
131
+                break;
132
+            }
133
+            case StFormat_Mono:
134
+            case StFormat_SeparateFrames:
135
+            case StFormat_FrameSequence:
136
+            case StFormat_AnaglyphRedCyan:
137
+            case StFormat_AnaglyphGreenMagenta:
138
+            case StFormat_AnaglyphYellowBlue:
139
+            case StFormat_AUTO: {
140
+                reset();
141
+                copyProps(theDataL, theDataR);
142
+                myDataL.initReference(theDataL);
143
+                myDataR.initReference(theDataR);
144
+                break;
145
+            }
146
+            case StFormat_NB: {
147
+                reset();
148
+                return;
149
+            }
150
+        }
151
+
152
+        if(!toCopy) {
153
+            validateCubemap(theCubemap);
154
+            return;
155
+        }
156
+    }
157
+
158
+    myDataPair.setBufferCounter(NULL);
159
+    myDataL.setBufferCounter(NULL);
160
+    myDataR.setBufferCounter(NULL);
161
+
162
     // reallocate buffer if needed
163
     const size_t aNewSizeBytes = computeBufferSize(theDataL) + computeBufferSize(theDataR);
164
     if(aNewSizeBytes == 0) {
165
         // invalid data
166
+        myDataPair.nullify();
167
         myDataL.nullify();
168
         myDataR.nullify();
169
+        myCubemapFormat = StCubemap_OFF;
170
         return;
171
     }
172
 
173
     reAllocate(aNewSizeBytes);
174
-    myDataL.setColorModel(theDataL.getColorModel());
175
-    myDataL.setColorScale(theDataL.getColorScale());
176
-    myDataR.setColorModel(theDataR.isNull() ? theDataL.getColorModel() : theDataR.getColorModel());
177
-    myDataR.setColorScale(theDataR.isNull() ? theDataL.getColorScale() : theDataR.getColorScale());
178
-    myDataL.setPixelRatio(theDataL.getPixelRatio());
179
-    myDataR.setPixelRatio(theDataL.getPixelRatio());
180
+    copyProps(theDataL, theDataR);
181
 
182
     switch(mySrcFormat) {
183
         case StFormat_SideBySide_LR:
184
@@ -424,24 +558,32 @@
185
             break;
186
         }
187
     }
188
-    if(myCubemapFormat == StCubemap_Packed) {
189
-        size_t aCoeffs[2] = {0, 0};
190
-        if(!myDataL.isNull()) {
191
-            for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
192
-                const StImagePlane& aPlane = myDataL.getPlane(aPlaneId);
193
-                if(!checkCubeMap(aPlane, aCoeffs[0], aCoeffs[1])) {
194
-                    myCubemapFormat = StCubemap_OFF;
195
-                    break;
196
-                }
197
+    validateCubemap(theCubemap);
198
+}
199
+
200
+void StGLTextureData::validateCubemap(const StCubemap theCubemap) {
201
+    if(theCubemap != StCubemap_Packed) {
202
+        myCubemapFormat = StCubemap_OFF;
203
+        return;
204
+    }
205
+
206
+    myCubemapFormat = theCubemap;
207
+    size_t aCoeffs[2] = {0, 0};
208
+    if(!myDataL.isNull()) {
209
+        for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
210
+            const StImagePlane& aPlane = myDataL.getPlane(aPlaneId);
211
+            if(!checkCubeMap(aPlane, aCoeffs[0], aCoeffs[1])) {
212
+                myCubemapFormat = StCubemap_OFF;
213
+                return;
214
             }
215
         }
216
-        if(!myDataR.isNull()) {
217
-            for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
218
-                const StImagePlane& aPlane = myDataR.getPlane(aPlaneId);
219
-                if(!checkCubeMap(aPlane, aCoeffs[0], aCoeffs[1])) {
220
-                    myCubemapFormat = StCubemap_OFF;
221
-                    break;
222
-                }
223
+    }
224
+    if(!myDataR.isNull()) {
225
+        for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
226
+            const StImagePlane& aPlane = myDataR.getPlane(aPlaneId);
227
+            if(!checkCubeMap(aPlane, aCoeffs[0], aCoeffs[1])) {
228
+                myCubemapFormat = StCubemap_OFF;
229
+                return;
230
             }
231
         }
232
     }
233
@@ -630,9 +772,9 @@
234
 void StGLTextureData::getCopy(StImage* theDataL,
235
                               StImage* theDataR) const {
236
     if(theDataL != NULL) {
237
-        theDataL->initCopy(myDataL);
238
+        theDataL->initCopy(myDataL, true);
239
     }
240
     if(theDataR != NULL) {
241
-        theDataR->initCopy(myDataR);
242
+        theDataR->initCopy(myDataR, true);
243
     }
244
 }
245
sview-15_10.tar.gz/StShared/StGLTextureQueue.cpp -> sview-15_11.tar.gz/StShared/StGLTextureQueue.cpp Changed
11
 
1
@@ -171,6 +171,9 @@
2
         // reset queue
3
         myQueueSize     = 0;
4
         myDataBack      = myDataFront;
5
+        if(myDataSnap != NULL) {
6
+            myDataSnap->resetStParams();
7
+        }
8
         myDataSnap      = NULL;
9
         mySwapFBCount   = 0;
10
         myIsReadyToSwap = false; // invalidate currently uploaded image in back buffer
11
sview-15_10.tar.gz/StShared/StImage.cpp -> sview-15_11.tar.gz/StShared/StImage.cpp Changed
86
 
1
@@ -45,16 +45,18 @@
2
     //
3
 }
4
 
5
-bool StImage::initCopy(const StImage& theCopy) {
6
+bool StImage::initCopy(const StImage& theCopy,
7
+                       const bool     theIsCompact) {
8
     nullify();
9
     setColorModel(theCopy.getColorModel());
10
     setColorScale(theCopy.getColorScale());
11
+    myPAR = theCopy.myPAR;
12
     for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
13
         const StImagePlane& aFromPlane = theCopy.getPlane(aPlaneId);
14
         if(aFromPlane.isNull()) {
15
             continue;
16
         }
17
-        if(!changePlane(aPlaneId).initCopy(aFromPlane)) {
18
+        if(!changePlane(aPlaneId).initCopy(aFromPlane, theIsCompact)) {
19
             return false;
20
         }
21
     }
22
@@ -65,6 +67,7 @@
23
     nullify();
24
     setColorModel(theCopy.getColorModel());
25
     setColorScale(theCopy.getColorScale());
26
+    myPAR = theCopy.myPAR;
27
     for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
28
         const StImagePlane& aFromPlane = theCopy.getPlane(aPlaneId);
29
         if(aFromPlane.isNull()) {
30
@@ -77,6 +80,29 @@
31
     return true;
32
 }
33
 
34
+bool StImage::initReference(const StImage& theCopy) {
35
+    nullify();
36
+    if( theCopy.myBufCounter.isNull()
37
+    || !initWrapper(theCopy)) {
38
+        return false;
39
+    }
40
+
41
+    theCopy.myBufCounter->createReference(myBufCounter);
42
+    return true;
43
+}
44
+
45
+bool StImage::initReference(const StImage&                   theCopy,
46
+                            const StHandle<StBufferCounter>& theRef) {
47
+    nullify();
48
+    if( theRef.isNull()
49
+    || !initWrapper(theCopy)) {
50
+        return false;
51
+    }
52
+
53
+    theRef->createReference(myBufCounter);
54
+    return true;
55
+}
56
+
57
 bool StImage::initTrashLimited(const StImage& theRef,
58
                                const size_t   theSizeX,
59
                                const size_t   theSizeY) {
60
@@ -189,12 +215,13 @@
61
     return true;
62
 }
63
 
64
-bool StImage::fill(const StImage& theCopy) {
65
+bool StImage::fill(const StImage& theCopy,
66
+                   const bool     theIsCompact) {
67
     if(getColorModel() != theCopy.getColorModel()) {
68
-        return initCopy(theCopy);
69
+        return initCopy(theCopy, theIsCompact);
70
     }
71
     for(size_t aPlaneId = 0; aPlaneId < 4; ++aPlaneId) {
72
-        if(!changePlane(aPlaneId).fill(theCopy.getPlane(aPlaneId))) {
73
+        if(!changePlane(aPlaneId).fill(theCopy.getPlane(aPlaneId), theIsCompact)) {
74
             nullify();
75
             return false;
76
         }
77
@@ -212,5 +239,8 @@
78
     myPlanes[1].nullify();
79
     myPlanes[2].nullify();
80
     myPlanes[3].nullify();
81
+    if(!myBufCounter.isNull()) {
82
+        myBufCounter->releaseReference();
83
+    }
84
     myPAR = 1.0f;
85
 }
86
sview-15_10.tar.gz/StShared/StImageFile.cpp -> sview-15_11.tar.gz/StShared/StImageFile.cpp Changed
29
 
1
@@ -15,6 +15,8 @@
2
 #include <StFile/StFileNode.h>
3
 #include <StFile/StMIME.h>
4
 
5
+#include <StStrings/StLogger.h>
6
+
7
 StImageFile::StImageFile()
8
 : mySrcFormat(StFormat_AUTO) {
9
     //
10
@@ -177,3 +179,18 @@
11
     }
12
     return StHandle<StImageFile>();
13
 }
14
+
15
+StImageFileCounter::~StImageFileCounter() {}
16
+
17
+void StImageFileCounter::createReference(StHandle<StBufferCounter>& theOther) const {
18
+    StHandle<StImageFileCounter> anImgFileRef = StHandle<StImageFileCounter>::downcast(theOther);
19
+    if(anImgFileRef.isNull()) {
20
+        anImgFileRef = new StImageFileCounter();
21
+        theOther = anImgFileRef;
22
+    }
23
+    anImgFileRef->myImageFile = myImageFile;
24
+}
25
+
26
+void StImageFileCounter::releaseReference() {
27
+    myImageFile.nullify();
28
+}
29
sview-15_10.tar.gz/StShared/StImagePlane.cpp -> sview-15_11.tar.gz/StShared/StImagePlane.cpp Changed
96
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2010-2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -16,8 +16,10 @@
9
         case ImgBGR:     return "ImgBGR";
10
         case ImgRGB32:   return "ImgRGB32";
11
         case ImgBGR32:   return "ImgBGR32";
12
+        case ImgRGB48:   return "ImgRGB48";
13
         case ImgRGBA:    return "ImgRGBA";
14
         case ImgBGRA:    return "ImgBGRA";
15
+        case ImgRGBA64:  return "ImgRGBA64";
16
         case ImgGrayF:   return "ImgGrayF";
17
         case ImgRGBF:    return "ImgRGBF";
18
         case ImgBGRF:    return "ImgBGRF";
19
@@ -63,10 +65,16 @@
20
         case ImgBGRA:
21
             mySizeBPP = 4;
22
             break;
23
+        case ImgRGBA64:
24
+            mySizeBPP = 8;
25
+            break;
26
         case ImgRGB32:
27
         case ImgBGR32:
28
             mySizeBPP = 4;
29
             break;
30
+        case ImgRGB48:
31
+            mySizeBPP = 6;
32
+            break;
33
         case ImgRGB:
34
         case ImgBGR:
35
             mySizeBPP = 3;
36
@@ -129,17 +137,31 @@
37
     return true;
38
 }
39
 
40
-bool StImagePlane::initCopy(const StImagePlane& theCopy) {
41
-    if(initTrash(theCopy.getFormat(), theCopy.getSizeX(), theCopy.getSizeY(), theCopy.getSizeRowBytes())) {
42
+bool StImagePlane::initCopy(const StImagePlane& theCopy,
43
+                            const bool          theIsCompact) {
44
+    if(!initTrash(theCopy.myImgFormat, theCopy.mySizeX, theCopy.mySizeY, theIsCompact ? 0 : theCopy.mySizeRowBytes)) {
45
+        return false;
46
+    }
47
+
48
+    if(mySizeRowBytes == theCopy.mySizeRowBytes) {
49
         stMemCpy(changeData(), theCopy.getData(), theCopy.getSizeBytes());
50
         return true;
51
     }
52
-    return false;
53
+
54
+    const size_t aCopyRowBytes = stMin(mySizeRowBytes, theCopy.mySizeRowBytes);
55
+    for(size_t aRow = 0; aRow < mySizeY; ++aRow) {
56
+        stMemCpy(changeData(aRow, 0), theCopy.getData(aRow, 0), aCopyRowBytes);
57
+    }
58
+    return true;
59
 }
60
 
61
 bool StImagePlane::initWrapper(const StImagePlane& theCopy) {
62
-    return initWrapper(theCopy.getFormat(), theCopy.myDataPtr,
63
-                       theCopy.getSizeX(), theCopy.getSizeY(), theCopy.getSizeRowBytes());
64
+    if(!initWrapper(theCopy.myImgFormat, theCopy.myDataPtr,
65
+                    theCopy.mySizeX, theCopy.mySizeY, theCopy.mySizeRowBytes)) {
66
+        return false;
67
+    }
68
+    myIsTopBottom = theCopy.myIsTopBottom;
69
+    return true;
70
 }
71
 
72
 bool StImagePlane::initSideBySide(const StImagePlane& theImageL,
73
@@ -186,16 +208,19 @@
74
     return true;
75
 }
76
 
77
-bool StImagePlane::fill(const StImagePlane& theCopy) {
78
+bool StImagePlane::fill(const StImagePlane& theCopy,
79
+                        const bool          theIsCompact) {
80
     if(getSizeY()        != theCopy.getSizeY()
81
     || getSizeRowBytes() != theCopy.getSizeRowBytes()
82
     || getFormat()       != theCopy.getFormat()) {
83
-        return initCopy(theCopy);
84
+        return initCopy(theCopy, theIsCompact);
85
     }
86
+
87
+    const size_t aCopyRowBytes = stMin(mySizeRowBytes, theCopy.mySizeRowBytes);
88
     for(size_t row = 0; row < theCopy.getSizeY(); ++row) {
89
         stMemCpy(changeData(row, 0),
90
                  theCopy.getData(row, 0),
91
-                 theCopy.getSizeRowBytes());
92
+                 aCopyRowBytes);
93
     }
94
     return true;
95
 }
96
sview-15_10.tar.gz/StShared/StPlayList.cpp -> sview-15_11.tar.gz/StShared/StPlayList.cpp Changed
30
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -260,6 +260,21 @@
9
     return (myCurrent != NULL) ? myCurrent->getPosition() : 0;
10
 }
11
 
12
+StPlayList::CurrentPosition StPlayList::getCurrentPosition() const {
13
+    StMutexAuto anAutoLock(myMutex);
14
+    if(myCurrent == NULL) {
15
+        return CurrentPosition_NONE;
16
+    } else if(myCurrent == myFirst) {
17
+        if(myCurrent == myLast) {
18
+            return CurrentPosition_Single;
19
+        }
20
+        return CurrentPosition_First;
21
+    } else if(myCurrent == myLast) {
22
+        return CurrentPosition_Last;
23
+    }
24
+    return CurrentPosition_Middle;
25
+}
26
+
27
 StString StPlayList::getCurrentTitle() const {
28
     StMutexAuto anAutoLock(myMutex);
29
     return (myCurrent != NULL) ? myCurrent->getTitle() : StString();
30
sview-15_10.tar.gz/StShared/StShared.cbp -> sview-15_11.tar.gz/StShared/StShared.cbp Changed
96
 
1
@@ -6,38 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StShared" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME)" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME)" prefix_auto="1" extension_auto="1" />
7
-               <Option working_dir="../bin/$(TARGET_NAME)" />
8
-               <Option object_output="obj/$(TARGET_NAME)/" />
9
-               <Option type="3" />
10
-               <Option compiler="gcc" />
11
-               <Option createStaticLib="1" />
12
-               <Compiler>
13
-                   <Add option="-O3" />
14
-                   <Add option="-std=c++0x" />
15
-                   <Add option="-Wall" />
16
-                   <Add option="-g" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_SHARED_DLL" />
22
-                   <Add option="-D__MSVCRT_VERSION__=0x0601" />
23
-                   <Add option="-DST_HAVE_STCONFIG" />
24
-               </Compiler>
25
-               <Linker>
26
-                   <Add library="opengl32" />
27
-                   <Add library="user32" />
28
-                   <Add library="gdi32" />
29
-                   <Add library="Advapi32" />
30
-                   <Add library="Comdlg32" />
31
-                   <Add library="Shell32" />
32
-                   <Add library="Ole32.lib" />
33
-                   <Add library="Version" />
34
-                   <Add library="Wsock32" />
35
-               </Linker>
36
-           </Target>
37
            <Target title="WIN_vc_x86">
38
                <Option output="../bin/$(TARGET_NAME)/StShared" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="1" extension_auto="1" />
39
                <Option working_dir="../bin/$(TARGET_NAME)" />
40
@@ -68,12 +36,12 @@
41
                    <Add library="Wsock32" />
42
                </Linker>
43
            </Target>
44
-           <Target title="WIN_vc_x86_DEBUG">
45
+           <Target title="WIN_vc_AMD64_DEBUG">
46
                <Option output="../bin/$(TARGET_NAME)/StShared" imp_lib="../lib/$(TARGET_NAME)/$(TARGET_OUTPUT_BASENAME).a" def_file="$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).def" prefix_auto="1" extension_auto="1" />
47
                <Option working_dir="../bin/$(TARGET_NAME)" />
48
                <Option object_output="obj/$(TARGET_NAME)/" />
49
                <Option type="3" />
50
-               <Option compiler="msvc10" />
51
+               <Option compiler="windows_sdk_x86_64" />
52
                <Option createStaticLib="1" />
53
                <Compiler>
54
                    <Add option="/MDd" />
55
@@ -296,9 +264,8 @@
56
        <Unit filename="StFTLibrary.cpp" />
57
        <Unit filename="StFileNode.cpp" />
58
        <Unit filename="StFileNode2.cpp">
59
-           <Option target="WIN_gcc_x86" />
60
            <Option target="WIN_vc_x86" />
61
-           <Option target="WIN_vc_x86_DEBUG" />
62
+           <Option target="WIN_vc_AMD64_DEBUG" />
63
            <Option target="WIN_vc_AMD64" />
64
            <Option target="LINUX_gcc" />
65
            <Option target="LINUX_gcc_DEBUG" />
66
@@ -362,9 +329,8 @@
67
        <Unit filename="StProcess2.cpp" />
68
        <Unit filename="StRawFile.cpp" />
69
        <Unit filename="StRegisterImpl.cpp">
70
-           <Option target="WIN_gcc_x86" />
71
            <Option target="WIN_vc_x86" />
72
-           <Option target="WIN_vc_x86_DEBUG" />
73
+           <Option target="WIN_vc_AMD64_DEBUG" />
74
            <Option target="WIN_vc_AMD64" />
75
        </Unit>
76
        <Unit filename="StResourceManager.cpp" />
77
@@ -389,6 +355,7 @@
78
        <Unit filename="stAV.cpp" />
79
        <Unit filename="stConsole.cpp" />
80
        <Unit filename="stUtfTools.cpp" />
81
+       <Unit filename="../include/StAV/StAVBufferPool.h" />
82
        <Unit filename="../include/StAV/StAVFrame.h" />
83
        <Unit filename="../include/StAV/StAVImage.h" />
84
        <Unit filename="../include/StAV/StAVPacket.h" />
85
@@ -545,9 +512,8 @@
86
        <Unit filename="../include/stconfig.conf" />
87
        <Unit filename="StShared.rc">
88
            <Option compilerVar="WINDRES" />
89
-           <Option target="WIN_gcc_x86" />
90
            <Option target="WIN_vc_x86" />
91
-           <Option target="WIN_vc_x86_DEBUG" />
92
+           <Option target="WIN_vc_AMD64_DEBUG" />
93
            <Option target="WIN_vc_AMD64" />
94
        </Unit>
95
        <Extensions>
96
sview-15_10.tar.gz/StShared/stAV.cpp -> sview-15_11.tar.gz/StShared/stAV.cpp Changed
47
 
1
@@ -108,6 +108,7 @@
2
 const PixelFormat stAV::PIX_FMT::YUV410P    = ST_AV_GETPIXFMT("yuv410p");
3
 const PixelFormat stAV::PIX_FMT::YUV411P    = ST_AV_GETPIXFMT("yuv411p");
4
 const PixelFormat stAV::PIX_FMT::YUV440P    = ST_AV_GETPIXFMT("yuv440p");
5
+const PixelFormat stAV::PIX_FMT::NV12       = ST_AV_GETPIXFMT("nv12");
6
 const PixelFormat stAV::PIX_FMT::YUV420P9   = ST_AV_GETPIXFMT("yuv420p9");
7
 const PixelFormat stAV::PIX_FMT::YUV422P9   = ST_AV_GETPIXFMT("yuv422p9");
8
 const PixelFormat stAV::PIX_FMT::YUV444P9   = ST_AV_GETPIXFMT("yuv444p9");
9
@@ -123,6 +124,11 @@
10
 const PixelFormat stAV::PIX_FMT::YUVJ440P   = ST_AV_GETPIXFMT("yuvj440p");
11
 const PixelFormat stAV::PIX_FMT::RGB24      = ST_AV_GETPIXFMT("rgb24");
12
 const PixelFormat stAV::PIX_FMT::BGR24      = ST_AV_GETPIXFMT("bgr24");
13
+const PixelFormat stAV::PIX_FMT::RGB48      = ST_AV_GETPIXFMT("rgb48");
14
+const PixelFormat stAV::PIX_FMT::BGR48      = ST_AV_GETPIXFMT("bgr48");
15
+const PixelFormat stAV::PIX_FMT::RGBA64     = ST_AV_GETPIXFMT("rgba64");
16
+const PixelFormat stAV::PIX_FMT::BGRA64     = ST_AV_GETPIXFMT("bgra64");
17
+const PixelFormat stAV::PIX_FMT::DXVA2_VLD  = ST_AV_GETPIXFMT("dxva2_vld");
18
 
19
 // TODO (Kirill Gavrilov#9) remove this stuff
20
 namespace {
21
@@ -189,6 +195,8 @@
22
         return stCString("rgb24");
23
     } else if(theFrmt == stAV::PIX_FMT::BGR24) {
24
         return stCString("bgr24");
25
+    } else if(theFrmt == stAV::PIX_FMT::NV12) {
26
+        return stCString("nv12");
27
     } else {
28
         return stCString("unknown");
29
     }
30
@@ -512,13 +520,11 @@
31
     return true;
32
 }
33
 
34
-bool stAV::meta::readTag(AVFrame*         theFrame,
35
-                         const StCString& theKey,
36
-                         StString&        theValue) {
37
+stAV::meta::Dict* stAV::meta::getFrameMetadata(AVFrame* theFrame) {
38
 #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 38, 100)) && !defined(ST_LIBAV_FORK)
39
-    return readTag(av_frame_get_metadata(theFrame), theKey, theValue);
40
+    return av_frame_get_metadata(theFrame);
41
 #else
42
-    return false;
43
+    return NULL;
44
 #endif
45
 }
46
 
47
sview-15_10.tar.gz/StTests/StTestGlBand.cpp -> sview-15_11.tar.gz/StTests/StTestGlBand.cpp Changed
10
 
1
@@ -119,7 +119,7 @@
2
     st::cout << stostream_text("RGB Frame to Frame ") << theFrameSizeX << stostream_text(" x ") << theFrameSizeY << stostream_text(" (RAM)\n");
3
     myTimer.restart();
4
     for(size_t anIter = 0; anIter < TEST_ITERATIONS; ++anIter) {
5
-        if(!anImgPlaneDst.fill(anImgPlaneSrc)) {
6
+        if(!anImgPlaneDst.fill(anImgPlaneSrc, false)) {
7
             st::cout << stostream_text("Fail to fill the image plane...\n");
8
             return;
9
         }
10
sview-15_10.tar.gz/StTests/StTests.cbp -> sview-15_11.tar.gz/StTests/StTests.cbp Changed
61
 
1
@@ -6,33 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/StTests" prefix_auto="1" extension_auto="1" />
7
-               <Option working_dir="../bin/$(TARGET_NAME)/" />
8
-               <Option object_output="obj/$(TARGET_NAME)/" />
9
-               <Option type="1" />
10
-               <Option compiler="gcc" />
11
-               <Option parameters="demo.jps" />
12
-               <Compiler>
13
-                   <Add option="-O3" />
14
-                   <Add option="-std=c++0x" />
15
-                   <Add option="-Wall" />
16
-                   <Add option="-g" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="opengl32" />
25
-                   <Add library="gdi32" />
26
-                   <Add library="user32" />
27
-                   <Add library="kernel32" />
28
-                   <Add library="Comdlg32" />
29
-                   <Add library="Version" />
30
-               </Linker>
31
-           </Target>
32
            <Target title="WIN_vc_x86">
33
                <Option output="../bin/$(TARGET_NAME)/StTests" prefix_auto="1" extension_auto="1" />
34
                <Option working_dir="../bin/$(TARGET_NAME)/" />
35
@@ -65,12 +38,12 @@
36
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /manifest &quot;..\dpiAware.manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;1' />
37
                </ExtraCommands>
38
            </Target>
39
-           <Target title="WIN_vc_x86_DEBUG">
40
+           <Target title="WIN_vc_AMD64_DEBUG">
41
                <Option output="../bin/$(TARGET_NAME)/StTests" prefix_auto="1" extension_auto="1" />
42
                <Option working_dir="../bin/$(TARGET_NAME)/" />
43
                <Option object_output="obj/$(TARGET_NAME)/" />
44
                <Option type="1" />
45
-               <Option compiler="msvc10" />
46
+               <Option compiler="windows_sdk_x86_64" />
47
                <Option parameters="demo.jps" />
48
                <Compiler>
49
                    <Add option="/MDd" />
50
@@ -271,9 +244,8 @@
51
            <Option target="MAC_gcc_DEBUG" />
52
        </Unit>
53
        <Unit filename="main.cpp">
54
-           <Option target="WIN_gcc_x86" />
55
            <Option target="WIN_vc_x86" />
56
-           <Option target="WIN_vc_x86_DEBUG" />
57
+           <Option target="WIN_vc_AMD64_DEBUG" />
58
            <Option target="WIN_vc_AMD64" />
59
            <Option target="LINUX_gcc" />
60
            <Option target="LINUX_gcc_DEBUG" />
61
sview-15_10.tar.gz/distribution/build.iss -> sview-15_11.tar.gz/distribution/build.iss Changed
9
 
1
@@ -166,7 +166,6 @@
2
 Source: {#SVIEW_DISTR_PATH_AMD64}\StCore.dll;     DestDir: {app}\amd64;  Flags: 64bit ignoreversion; Components: StCore; Check: IsWin64
3
 Source: {#SVIEW_DISTR_PATH_x86}\StDiagnostics.dll;   DestDir: {app};       Flags: 32bit ignoreversion; Components: StCore
4
 Source: {#SVIEW_DISTR_PATH_AMD64}\StDiagnostics.dll; DestDir: {app}\amd64; Flags: 64bit ignoreversion; Components: StCore; Check: IsWin64
5
-Source: {#SVIEW_DISTR_PATH_x86}\shaders\StGLWidgets\*;         DestDir: {app}\shaders\StGLWidgets;       Flags: 32bit ignoreversion; Components: StCore
6
 Source: {#SVIEW_DISTR_PATH_x86}\lang\Korean\language.lng;      DestDir: {app}\lang\Korean;               Flags: 32bit ignoreversion; Components: StCore
7
 Source: {#SVIEW_DISTR_PATH_x86}\lang\ChineseS\language.lng;    DestDir: {app}\lang\ChineseS;             Flags: 32bit ignoreversion; Components: StCore
8
 Source: {#SVIEW_DISTR_PATH_x86}\lang\Czech\language.lng;       DestDir: {app}\lang\Czech;                Flags: 32bit ignoreversion; Components: StCore
9
sview-15_10.tar.gz/distribution/buildDebSrc.sh -> sview-15_11.tar.gz/distribution/buildDebSrc.sh Changed
14
 
1
@@ -41,8 +41,10 @@
2
 cp -f -r ../sview          $aDebSrcRoot/
3
 cp -f -r ../textures       $aDebSrcRoot/
4
 cp -f    ../Makefile       $aDebSrcRoot/
5
-cp -f    ../README         $aDebSrcRoot/
6
-cp -f    ../LICENSE        $aDebSrcRoot/
7
+cp -f    ../README.md      $aDebSrcRoot/
8
+cp -f    ../README.md      $aDebSrcRoot/README
9
+cp -f    ../LICENSE.md     $aDebSrcRoot/
10
+cp -f    ../LICENSE.md     $aDebSrcRoot/LICENSE
11
 cp -f    ../license*.txt   $aDebSrcRoot/
12
 
13
 mkdir -p $aDebSrcRoot/3rdparty/include
14
sview-15_10.tar.gz/distribution/buildDebSrc_ppa.sh -> sview-15_11.tar.gz/distribution/buildDebSrc_ppa.sh Changed
11
 
1
@@ -21,8 +21,7 @@
2
 # Ubuntu 14.04 LTS (Trusty Tahr)
3
 # Ubuntu 15.04     (Vivid Vervet)
4
 # Ubuntu 15.10     (Wily Werewolf)
5
-#aDistribs=("trusty" "vivid" "wily")
6
-aDistribs=("trusty" "vivid")
7
+aDistribs=("trusty" "vivid" "wily")
8
 
9
 # Debian
10
 #aDistribs=("stable" "unstable" "testing-proposed-updates" "experimental")
11
sview-15_10.tar.gz/distribution/media/sView_SetupMac.png -> sview-15_11.tar.gz/distribution/media/sView_SetupMac.png Changed
sview-15_11.tar.gz/docs/INSTALL.md Added
115
 
1
@@ -0,0 +1,113 @@
2
+## I. Installing 3rd-parties
3
+
4
+sView requires several 3rd-party components for building:
5
+* C/C++ compiler (g++, MSVC 2010+)
6
+* Code::Blocks (http://www.codeblocks.org)
7
+* FFmpeg (http://www.ffmpeg.org)
8
+* OpenAL soft (http://kcat.strangesoft.net/openal.html)
9
+* libwebp, optional (https://developers.google.com/speed/webp/download)
10
+* GTK2+, Linux only (http://www.gtk.org)
11
+* libconfig++, Linux and Android (http://www.hyperrealm.com/libconfig)
12
+* libxpm, Linux only
13
+
14
+On Debian/Ubuntu you might use the following command to install all dependencies at once:
15
+
16
+~~~~~
17
+sudo apt-get install \
18
+ g++ \
19
+ libgtk2.0-dev \
20
+ libopenal-dev \
21
+ libgl1-mesa-dev \
22
+ libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libswscale-dev \
23
+ libwebp-dev \
24
+ libconfig++-dev libconfig-dev \
25
+ libxpm-dev \
26
+ codeblocks
27
+~~~~~
28
+ 
29
+The similar command for RPM-based distributives:
30
+
31
+~~~~~
32
+yum install gcc gcc-c++ \
33
+ gtk+-devel gtk2-devel \
34
+ mesa-libGLU-devel glew-devel \
35
+ openal-devel \
36
+ libconfig-devel
37
+
38
+rpm -Uvh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
39
+yum install ffmpeg-devel
40
+~~~~~
41
+
42
+On Windows and Mac OS X please refer to official documentation for each project.
43
+Notice that DevIL and FreeImage libraries are optional and need not for building sView
44
+(libraries are loaded dynamically if available).
45
+
46
+## II. Makefile on Linux
47
+
48
+Current Makefile has been written only for DEB/RPM source packages
49
+and lacks configuration flexibility (means there NO any ./configure and so on).
50
+
51
+All you need is to install dependencies and to execute traditional commands:
52
+
53
+~~~~~
54
+  make && make install
55
+~~~~~
56
+
57
+## III. Code::Blocks
58
+
59
+Code::Blocks is an official way for building and development of sView.
60
+There are several building targets depending on platform
61
+(Mac OS X, Linux, Windows) and debugging possibilities:
62
+* `WIN_vc_x86`,        32-bit target using Visual Studio compiler
63
+* `WIN_vc_AMD64_DEBUG`,64-bit target with debugging options
64
+* `WIN_vc_AMD64`,      64-bit target using Visual Studio compiler
65
+* `LINUX_gcc`,         Linux target, g++ compiler
66
+* `LINUX_gcc_DEBUG`,   Linux target with debugging options
67
+* `MAC_gcc`,           Mac OS X target, g++ compatible compiler
68
+* `MAC_gcc_DEBUG`,     Mac OS X target with debugging options
69
+
70
+Notice that the following compilers should be configured within Code::Blocks:
71
+* `gcc`,               configured to g++ or compatible compiler (on systems other than Windows)
72
+* `msvc10`,            configured to Visual Studio 2010+ compiler, PSDK and DXSDK
73
+* `windows_sdk_x86_64` (copy of msvc10) configured to 64-bit libraries and compiler toolchain
74
+
75
+3rd-parties should be either configured as Code::Blocks global compiler options
76
+or placed into "3rdparty" folder.
77
+
78
+## IV. Building options
79
+
80
+Several preprocessor directives control building options.
81
+Notice that by default "include/stconfig.conf" file is used to override these options
82
+(this file will be used only when ST_HAVE_STCONFIG is defined).
83
+
84
+* `ST_HAVE_WEBP` - should be defined to activate libwebp usage
85
+  (notice that since next releases of FFmpeg might have built-in support for webp/webpll image files)
86
+* `ST_HAVE_MONGOOSE` - should be defined to activate built-in web UI for remote Movie Player control
87
+* `ST_DEBUG` - should be defined to activate debugging log output
88
+* `ST_DEBUG_LOG_TO_FILE` - specifies file name or full path to duplicate debug log output
89
+
90
+## V. Distribution scripts
91
+
92
+Several script were written to automate distribution routines.
93
+All them were placed in "distribution" folder.
94
+
95
+* `build.bat`, batch script for Windows. Performs re-building of **WIN_vc_x86** and **WIN_vc_AMD64** targets
96
+  using Code::Blocks and pack result binaries using InnoSetup script.
97
+  Notice that all dependencies should be available (including InnoSetup),
98
+  and DLLs should be placed into **bin/WIN_vc_x86** and **bin/WIN_vc_AMD64** folders.
99
+* `buildDebSrc.sh`, bash script for Linux to pack sources into Debian source package.
100
+* `buildMac.sh`, bash script to pack binaries from **bin/MAC_gcc** folder into DMG image.
101
+  3rd-party libraries should be already located in "bin/MAC_gcc_DEBUG/sView.app/Contents/Frameworks/"
102
+  folder with correct search path (refer to `bind_frameworks.sh` auxiliary script).
103
+
104
+~~~~~
105
+su
106
+yum install rpm-build
107
+
108
+mkdir -p ${HOME}/workspace/redhat/{RPMS,SRPMS,SPECS,SOURCES,BUILD}
109
+echo "%_topdir ${HOME}/workspace/redhat" > ${HOME}/.rpmmacros
110
+
111
+wget https://launchpad.net/~sview/+archive/stable/+files/sview_12.05-1%7Eprecise.tar.gz
112
+mv sview_12.05-1~precise.tar.gz $HOME/workspace/redhat/SOURCES/sview_12.05-1.tar.gz
113
+rpmbuild -ba distribution/sView.rpm.spec
114
+~~~~~
115
sview-15_11.tar.gz/include/StAV/StAVBufferPool.h Added
106
 
1
@@ -0,0 +1,104 @@
2
+/**
3
+ * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
4
+ *
5
+ * Distributed under the Boost Software License, Version 1.0.
6
+ * See accompanying file license-boost.txt or copy at
7
+ * http://www.boost.org/LICENSE_1_0.txt
8
+ */
9
+
10
+#ifndef __StAVBufferPool_h_
11
+#define __StAVBufferPool_h_
12
+
13
+#include <StAV/stAV.h>
14
+
15
+struct AVBufferPool;
16
+struct AVBufferRef;
17
+
18
+/**
19
+ * This is just a wrapper over AVBufferPool structure.
20
+ */
21
+class StAVBufferPool {
22
+
23
+        public:
24
+
25
+    /**
26
+     * Empty constructor
27
+     */
28
+    ST_LOCAL StAVBufferPool()
29
+    : myPool(NULL),
30
+      myBufferSize(0) {
31
+        //
32
+    }
33
+
34
+    /**
35
+     * Destructor
36
+     */
37
+    ST_LOCAL ~StAVBufferPool() {
38
+        release();
39
+    }
40
+
41
+    /**
42
+     * Release the pool (reference-counted buffer will be released when needed).
43
+     */
44
+    ST_LOCAL void release() {
45
+    #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
46
+        if(myPool != NULL) {
47
+            av_buffer_pool_uninit(&myPool);
48
+            myPool       = NULL;
49
+            myBufferSize = 0;
50
+         }
51
+    #endif
52
+    }
53
+
54
+    /**
55
+     * (Re-)initialize the pool.
56
+     */
57
+    ST_LOCAL bool init(const int theBufferSize) {
58
+        if(myBufferSize == theBufferSize) {
59
+            return true;
60
+        }
61
+
62
+        release();
63
+        if(theBufferSize == 0) {
64
+            return true;
65
+        }
66
+
67
+    #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
68
+        myPool       = av_buffer_pool_init(theBufferSize, NULL);
69
+        myBufferSize = theBufferSize;
70
+        return myPool != NULL;
71
+    #else
72
+        return false;
73
+    #endif
74
+    }
75
+
76
+    /**
77
+     * Return buffer size within the pool.
78
+     */
79
+    int getBufferSize() const {
80
+        return myBufferSize;
81
+    }
82
+
83
+    /**
84
+     * Get new buffer from the pool.
85
+     */
86
+    ST_LOCAL AVBufferRef* getBuffer() {
87
+    #if(LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55, 45, 101))
88
+        return av_buffer_pool_get(myPool);
89
+    #else
90
+        return NULL;
91
+    #endif
92
+    }
93
+
94
+        private:
95
+
96
+    StAVBufferPool(const StAVBufferPool& theCopy);
97
+
98
+        private:
99
+
100
+    AVBufferPool* myPool;
101
+    int           myBufferSize;
102
+
103
+};
104
+
105
+#endif // __StAVBufferPool_h_
106
sview-15_10.tar.gz/include/StAV/StAVFrame.h -> sview-15_11.tar.gz/include/StAV/StAVFrame.h Changed
20
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -29,6 +29,11 @@
9
     ST_CPPEXPORT ~StAVFrame();
10
 
11
     /**
12
+     * Return true if frame does not contain any data.
13
+     */
14
+    ST_LOCAL bool isEmpty() const { return Frame->format == -1; } // AV_PIX_FMT_NONE
15
+
16
+    /**
17
      * Reset frame to default state (empty).
18
      */
19
     ST_CPPEXPORT void reset();
20
sview-15_10.tar.gz/include/StAV/StAVImage.h -> sview-15_11.tar.gz/include/StAV/StAVImage.h Changed
91
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -10,17 +10,20 @@
9
 #define __StAVImage_h_
10
 
11
 #include <StImage/StImageFile.h>
12
+#include <StAV/StAVFrame.h>
13
 
14
 struct AVInputFormat;
15
 struct AVFormatContext;
16
 struct AVCodecContext;
17
 struct AVCodec;
18
-struct AVFrame;
19
 
20
 // define StHandle template specialization
21
 class StAVImage;
22
 ST_DEFINE_HANDLE(StAVImage, StImageFile);
23
 
24
+class StAVFrameCounter;
25
+ST_DEFINE_HANDLE(StAVFrameCounter, StBufferCounter);
26
+
27
 /**
28
  * This class implements image load/save operation using libav* libraries.
29
  */
30
@@ -78,13 +81,59 @@
31
 
32
     ST_LOCAL static int getAVPixelFormat(const StImage& theImage);
33
 
34
+    /**
35
+     * Close currently opened image context and release memory.
36
+     */
37
+    ST_LOCAL void closeAvCtx();
38
+
39
         private:
40
 
41
     AVInputFormat*   myImageFormat; //!< image format
42
     AVFormatContext* myFormatCtx;   //!< file context
43
     AVCodecContext*  myCodecCtx;    //!< codec context
44
     AVCodec*         myCodec;       //!< codec
45
-    AVFrame*         myFrame;
46
+    StAVFrame        myFrame;
47
+
48
+};
49
+
50
+/**
51
+ * Pass reference-counted AVFrame (e.g. AVBuffer) into StImage without data copying.
52
+ */
53
+class StAVFrameCounter : public StBufferCounter {
54
+
55
+        public:
56
+
57
+    /**
58
+     * Default constructor.
59
+     */
60
+    ST_CPPEXPORT StAVFrameCounter();
61
+
62
+    /**
63
+     * Create the new reference (e.g. increment counter).
64
+     * If theOther has the same type, than the ref counter will be reused.
65
+     * Otherwise then new counter will be allocated.
66
+     */
67
+    ST_CPPEXPORT virtual void createReference(StHandle<StBufferCounter>& theOther) const;
68
+
69
+    /**
70
+     * Release current reference.
71
+     */
72
+    ST_CPPEXPORT virtual void releaseReference();
73
+
74
+    /**
75
+     * Release reference counter.
76
+     */
77
+    ST_CPPEXPORT virtual ~StAVFrameCounter();
78
+
79
+    /**
80
+     * Initialize a proxy reference.
81
+     */
82
+    ST_CPPEXPORT void moveReferenceFrom(AVFrame* theFrame);
83
+
84
+        private:
85
+
86
+    AVFrame* myFrame;   //!< frame
87
+    bool     myIsProxy; //!< proxy reference to be moved, not copied
88
 
89
 };
90
 
91
sview-15_10.tar.gz/include/StAV/stAV.h -> sview-15_11.tar.gz/include/StAV/stAV.h Changed
137
 
1
@@ -206,6 +206,7 @@
2
         ST_SHARED_CPPEXPORT PixelFormat YUV410P;   //!< planar YUV 4:1:0,  9bpp, (1 Cr & Cb sample per 4x4 Y samples)
3
         ST_SHARED_CPPEXPORT PixelFormat YUV411P;   //!< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
4
         ST_SHARED_CPPEXPORT PixelFormat YUV440P;   //!< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
5
+        ST_SHARED_CPPEXPORT PixelFormat NV12;      //!< YUV420, Y plane + interleaved UV plane oh half width and height
6
         // wide planar YUV formats (9,10,14,16 bits stored in 16 bits)
7
         ST_SHARED_CPPEXPORT PixelFormat YUV420P9;
8
         ST_SHARED_CPPEXPORT PixelFormat YUV422P9;
9
@@ -225,8 +226,14 @@
10
         // RGB formats
11
         ST_SHARED_CPPEXPORT PixelFormat RGB24;     //!< packed RGB 8:8:8, 24bpp, RGBRGB...
12
         ST_SHARED_CPPEXPORT PixelFormat BGR24;     //!< packed RGB 8:8:8, 24bpp, BGRBGR...
13
+        ST_SHARED_CPPEXPORT PixelFormat RGB48;
14
+        ST_SHARED_CPPEXPORT PixelFormat BGR48;
15
         ST_SHARED_CPPEXPORT PixelFormat RGBA32;
16
         ST_SHARED_CPPEXPORT PixelFormat BGRA32;
17
+        ST_SHARED_CPPEXPORT PixelFormat RGBA64;
18
+        ST_SHARED_CPPEXPORT PixelFormat BGRA64;
19
+        // HWAccel formats
20
+        ST_SHARED_CPPEXPORT PixelFormat DXVA2_VLD;
21
 
22
         ST_CPPEXPORT StCString getString(const PixelFormat theFrmt);
23
     }
24
@@ -282,6 +289,21 @@
25
 #endif
26
 
27
     /**
28
+     * Check is stream represents attached picture (e.g. NOT a video stream).
29
+     */
30
+    inline bool isAttachedPicture(const AVStream* theStream) {
31
+        if(theStream == NULL) {
32
+            return false;
33
+        }
34
+
35
+    #if(LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(54, 2, 100))
36
+        return (theStream->disposition & AV_DISPOSITION_ATTACHED_PIC) != 0;
37
+    #else
38
+        return false;
39
+    #endif
40
+    }
41
+
42
+    /**
43
      * Audio functions
44
      */
45
     namespace audio {
46
@@ -342,7 +364,12 @@
47
     #endif
48
 
49
         /**
50
-         * Alias to av_dict_get.
51
+         * Alias for av_frame_get_metadata().
52
+         */
53
+        ST_CPPEXPORT Dict* getFrameMetadata(AVFrame* theFrame);
54
+
55
+        /**
56
+         * Alias for av_dict_get().
57
          */
58
         ST_CPPEXPORT Tag* findTag(Dict*       theDict,
59
                                   const char* theKey,
60
@@ -360,21 +387,32 @@
61
                                   const StCString& theKey,
62
                                   StString&        theValue);
63
 
64
+        /**
65
+         * Read tag from Format Context metadata.
66
+         */
67
         inline bool readTag(AVFormatContext* theFormatCtx,
68
                             const StCString& theKey,
69
                             StString&        theValue) {
70
             return readTag(theFormatCtx->metadata, theKey, theValue);
71
         }
72
 
73
+        /**
74
+         * Read tag from Stream metadata.
75
+         */
76
         inline bool readTag(AVStream*        theStream,
77
                             const StCString& theKey,
78
                             StString&        theValue) {
79
             return readTag(theStream->metadata, theKey, theValue);
80
         }
81
 
82
-        ST_CPPEXPORT bool readTag(AVFrame*         theFrame,
83
-                                  const StCString& theKey,
84
-                                  StString&        theValue);
85
+        /**
86
+         * Read tag from Frame metadata.
87
+         */
88
+        inline bool readTag(AVFrame*         theFrame,
89
+                            const StCString& theKey,
90
+                            StString&        theValue) {
91
+            return readTag(getFrameMetadata(theFrame), theKey, theValue);
92
+        }
93
 
94
     }
95
 
96
@@ -399,19 +437,32 @@
97
     /**
98
      * Convert stereo3d enumeration from sView to FFmpeg definition.
99
      */
100
-    ST_LOCAL inline AVStereo3DType stereo3dStToAv(const StFormat theType) {
101
+    ST_LOCAL inline AVStereo3DType stereo3dStToAv(const StFormat theType,
102
+                                                  bool&          theIsReversed) {
103
+        theIsReversed = false;
104
         switch(theType) {
105
             default:
106
-            case StFormat_AUTO:               return (AVStereo3DType )-1;
107
-            case StFormat_Mono:               return AV_STEREO3D_2D;
108
+            case StFormat_AUTO:
109
+                return (AVStereo3DType )-1;
110
+            case StFormat_Mono:
111
+                return AV_STEREO3D_2D;
112
+            case StFormat_SideBySide_RL:
113
+                theIsReversed = true;
114
+                return AV_STEREO3D_SIDEBYSIDE;
115
             case StFormat_SideBySide_LR:
116
-            case StFormat_SideBySide_RL:      return AV_STEREO3D_SIDEBYSIDE;
117
+                return AV_STEREO3D_SIDEBYSIDE;
118
+            case StFormat_TopBottom_RL:
119
+                theIsReversed = true;
120
+                return AV_STEREO3D_TOPBOTTOM;
121
             case StFormat_TopBottom_LR:
122
-            case StFormat_TopBottom_RL:       return AV_STEREO3D_TOPBOTTOM;
123
-            case StFormat_Rows:               return AV_STEREO3D_LINES;
124
-            case StFormat_Columns:            return AV_STEREO3D_COLUMNS;
125
+                return AV_STEREO3D_TOPBOTTOM;
126
+            case StFormat_Rows:
127
+                return AV_STEREO3D_LINES;
128
+            case StFormat_Columns:
129
+                return AV_STEREO3D_COLUMNS;
130
             //case StFormat_SeparateFrames:
131
-            case StFormat_FrameSequence:      return AV_STEREO3D_FRAMESEQUENCE;
132
+            case StFormat_FrameSequence:
133
+                return AV_STEREO3D_FRAMESEQUENCE;
134
             //case StFormat_AnaglyphRedCyan:
135
             //case StFormat_AnaglyphGreenMagenta:
136
             //case StFormat_AnaglyphYellowBlue:
137
sview-15_10.tar.gz/include/StCore/StAndroidGlue.h -> sview-15_11.tar.gz/include/StCore/StAndroidGlue.h Changed
46
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2014-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #if defined(__ANDROID__)
25
@@ -89,6 +80,12 @@
26
      */
27
     static StCString getCommandIdName(StAndroidGlue::CommandId theCmd);
28
 
29
+    /**
30
+     * Retrieve path using android.os.Environment.getExternalStoragePublicDirectory().
31
+     */
32
+    static StString getStoragePath(JNIEnv*     theJEnv,
33
+                                   const char* theType);
34
+
35
         public: //! @name interface to implement
36
 
37
     /**
38
@@ -384,6 +381,7 @@
39
     StAndroidPollSource     myInputPollSource;
40
 
41
     StMutex                 myFetchLock;         //!< fetch data lock
42
+    StString                myStAppClass;        //!< application class name (e.g. image, video)
43
     StString                myDndPath;           //!< intent data string
44
     StString                myCreatePath;        //!< intent data string used to open this activity
45
     StQuaternion<double>    myQuaternion;        //!< device orientation
46
sview-15_10.tar.gz/include/StCore/StApplication.h -> sview-15_11.tar.gz/include/StCore/StApplication.h Changed
55
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
5
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StCore library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StCore library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #ifndef __StApplication_h_
26
@@ -25,6 +16,7 @@
27
 #include <StSlots/StAction.h>
28
 
29
 #include <map>
30
+#include <string>
31
 
32
 class StEventsBuffer;
33
 class StSettings;
34
@@ -135,6 +127,11 @@
35
      */
36
     ST_LOCAL const std::map< int, StHandle<StAction> >& getActions() const { return myActions; }
37
 
38
+    /**
39
+     * Find action ID for specified Action Name.
40
+     */
41
+    ST_CPPEXPORT int getActionIdFromName(const StString& theActionName) const;
42
+
43
         protected:
44
 
45
     /**
46
@@ -275,6 +272,8 @@
47
     StHandle<StOpenInfo>  myOpenFileInfo;          //!< file to open
48
     std::map< int, StHandle<StAction> >
49
                           myActions;               //!< ID -> Action map
50
+    std::map< std::string, int >
51
+                          myActionLookup;          //!< lookup map ActionName -> ActionID
52
     std::map< unsigned int, StHandle<StAction> >
53
                           myKeyActions;            //!< Hot Key -> Action map
54
     StHandle<StEventsBuffer>
55
sview-15_10.tar.gz/include/StCore/StEDIDParser.h -> sview-15_11.tar.gz/include/StCore/StEDIDParser.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2010-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StEDIDParser_h_
25
sview-15_10.tar.gz/include/StCore/StEvent.h -> sview-15_11.tar.gz/include/StCore/StEvent.h Changed
36
 
1
@@ -1,19 +1,10 @@
2
 /**
3
- * Copyright © 2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
5
+ * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
6
  *
7
- * StCore library is free software: you can redistribute it and/or modify
8
- * it under the terms of the GNU Lesser General Public License as published by
9
- * the Free Software Foundation, either version 3 of the License, or
10
- * (at your option) any later version.
11
- *
12
- * StCore library is distributed in the hope that it will be useful,
13
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- * See the GNU General Public License for more details.
16
- *
17
- * You should have received a copy of the GNU Lesser General Public
18
- * License along with this library.
19
- * If not, see <http://www.gnu.org/licenses/>.
20
+ * Distributed under the Boost Software License, Version 1.0.
21
+ * See accompanying file license-boost.txt or copy at
22
+ * http://www.boost.org/LICENSE_1_0.txt
23
  */
24
 
25
 #ifndef __StEvent_h_
26
@@ -118,7 +109,8 @@
27
 
28
     StEventType   Type;   //!< event type
29
     double        Time;   //!< time in seconds when event was registered
30
-    const char*   File;   //!< file path
31
+    const char**  Files;  //!< file paths
32
+    uint32_t      NbFiles;//!< number of files
33
 
34
 };
35
 
36
sview-15_10.tar.gz/include/StCore/StKeysState.h -> sview-15_11.tar.gz/include/StCore/StKeysState.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StKeysState_h_
25
sview-15_10.tar.gz/include/StCore/StMonitor.h -> sview-15_11.tar.gz/include/StCore/StMonitor.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StMonitor_h_
25
sview-15_10.tar.gz/include/StCore/StNativeWin_t.h -> sview-15_11.tar.gz/include/StCore/StNativeWin_t.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StNativeWin_t_h_
25
sview-15_10.tar.gz/include/StCore/StOpenInfo.h -> sview-15_11.tar.gz/include/StCore/StOpenInfo.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StOpenInfo_h_
25
sview-15_10.tar.gz/include/StCore/StSearchMonitors.h -> sview-15_11.tar.gz/include/StCore/StSearchMonitors.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StSearchMonitors_h_
25
sview-15_10.tar.gz/include/StCore/StVirtualKeys.h -> sview-15_11.tar.gz/include/StCore/StVirtualKeys.h Changed
34
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StVirtualKey_h_
25
@@ -305,7 +296,7 @@
26
     ST_VK_COMMA      = 0xBC,   // 188 = VK_OEM_COMMA   | ',' any country
27
     ST_VK_OEM_MINUS  = 0xBD,   // 189 = VK_OEM_MINUS   | '-' any country
28
     ST_VK_PERIOD     = 0xBE,   // 190 = VK_OEM_PERIOD  | '.' any country
29
-    ///ST_VK_OEM_2       = 0xBF,  // 191 = VK_OEM_2       | '/?' for US
30
+    ST_VK_SLASH      = 0xBF,   // 191 = VK_OEM_2       | '/?' for US
31
     ///ST_VK_OEM_3       = 0xC0,  // 192 = VK_OEM_3       | '`~' for US*
32
 
33
     ST_VK_BRACKETLEFT  = 0xDB, // 219 = VK_OEM_4       | '[{' for US
34
sview-15_10.tar.gz/include/StCore/StWinErrorCodes.h -> sview-15_11.tar.gz/include/StCore/StWinErrorCodes.h Changed
25
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2009 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StWinErrorCodes_h_
25
sview-15_10.tar.gz/include/StCore/StWindow.h -> sview-15_11.tar.gz/include/StCore/StWindow.h Changed
34
 
1
@@ -1,19 +1,10 @@
2
 /**
3
+ * StCore, window system independent C++ toolkit for writing OpenGL applications.
4
  * Copyright © 2007-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
- * StCore library is free software: you can redistribute it and/or modify
7
- * it under the terms of the GNU Lesser General Public License as published by
8
- * the Free Software Foundation, either version 3 of the License, or
9
- * (at your option) any later version.
10
- *
11
- * StCore library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
- * See the GNU General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library.
18
- * If not, see <http://www.gnu.org/licenses/>.
19
+ * Distributed under the Boost Software License, Version 1.0.
20
+ * See accompanying file license-boost.txt or copy at
21
+ * http://www.boost.org/LICENSE_1_0.txt
22
  */
23
 
24
 #ifndef __StWindow_h_
25
@@ -85,6 +76,8 @@
26
     StWinSlave_splitOff,         //!< do not split the window
27
     StWinSlave_splitHorizontal,  //!< split window horizontally
28
     StWinSlave_splitVertical,    //!< split window vertically
29
+    StWinSlave_splitVertHdmi720, //!< split window vertically (2x 1280x720  + 30 pixels between)
30
+    StWinSlave_splitVertHdmi1080 //!< split window vertically (2x 1920x1080 + 45 pixels between)
31
 };
32
 
33
 /**
34
sview-15_10.tar.gz/include/StGL/StPlayList.h -> sview-15_11.tar.gz/include/StGL/StPlayList.h Changed
50
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -114,6 +114,19 @@
9
         public:
10
 
11
     /**
12
+     * Enumeration identifying position of current item in the playlist.
13
+     */
14
+    enum CurrentPosition {
15
+        CurrentPosition_NONE,   //!< empty list
16
+        CurrentPosition_Single, //!< single item
17
+        CurrentPosition_First,  //!< first     in the list
18
+        CurrentPosition_Last,   //!< last      in the list
19
+        CurrentPosition_Middle, //!< somewhere in the list
20
+    };
21
+
22
+        public:
23
+
24
+    /**
25
      * Main constructor.
26
      */
27
     ST_CPPEXPORT StPlayList(const int  theRecursionDeep,
28
@@ -149,6 +162,12 @@
29
     ST_CPPEXPORT size_t getCurrentId() const;
30
 
31
     /**
32
+     * Return item index for the current position in playlist
33
+     * and flags if it is last or first
34
+     */
35
+    ST_CPPEXPORT StPlayList::CurrentPosition getCurrentPosition() const;
36
+
37
+    /**
38
      * Return title for the current position in playlist.
39
      * Will be empty string if playlist is empty.
40
      */
41
@@ -231,7 +250,7 @@
42
         return myItemsCount;
43
     }
44
 
45
-    inline bool isEmpty() const {
46
+    ST_LOCAL bool isEmpty() const {
47
         StMutexAuto anAutoLock(myMutex);
48
         return myFirst == NULL;
49
     }
50
sview-15_10.tar.gz/include/StGLStereo/StGLTextureData.h -> sview-15_11.tar.gz/include/StGLStereo/StGLTextureData.h Changed
42
 
1
@@ -51,8 +51,13 @@
2
         return myStParams;
3
     }
4
 
5
-    inline void resetStParams() {
6
+    ST_LOCAL void resetStParams() {
7
         myStParams.nullify();
8
+        if(!myDataPair.getBufferCounter().isNull()
9
+        || !myDataL.getBufferCounter().isNull()
10
+        || !myDataR.getBufferCounter().isNull()) {
11
+            reset();
12
+        }
13
     }
14
 
15
     /**
16
@@ -148,9 +153,16 @@
17
 
18
         private:
19
 
20
-
21
     ST_LOCAL bool reAllocate(const size_t theSizeBytes);
22
 
23
+    ST_LOCAL void copyProps(const StImage& theDataL,
24
+                            const StImage& theDataR);
25
+
26
+    /**
27
+     * Validate and setup packed cubemap flag.
28
+     */
29
+    ST_LOCAL void validateCubemap(const StCubemap theCubemap);
30
+
31
     /**
32
      * Fill the texture plane.
33
      */
34
@@ -167,6 +179,7 @@
35
 
36
     GLubyte*                 myDataPtr;       //!< data for left and right views
37
     size_t                   myDataSizeBytes; //!< allocated data size in bytes
38
+    StImage                  myDataPair;
39
     StImage                  myDataL;
40
     StImage                  myDataR;
41
 
42
sview-15_10.tar.gz/include/StGLWidgets/StGLAssignHotKey.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLAssignHotKey.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLButton.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLButton.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLCheckbox.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLCheckbox.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLCheckboxTextured.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLCheckboxTextured.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLCombobox.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLCombobox.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLCorner.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLCorner.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009, 2011 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLDescription.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLDescription.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLFpsLabel.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLFpsLabel.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLImageProgram.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLImageProgram.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLImageRegion.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLImageRegion.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMenu.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMenu.h Changed
25
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -49,15 +50,14 @@
8
     ST_CPPEXPORT virtual void stglResize();
9
     ST_CPPEXPORT virtual bool stglInit();
10
     ST_CPPEXPORT virtual void stglDraw(unsigned int theView);
11
+    ST_CPPEXPORT virtual bool doKeyDown(const StKeyEvent& theEvent);
12
     ST_CPPEXPORT virtual bool tryUnClick(const StPointD_t& theCursorZo, const int& theMouseBtn, bool& theIsItemUnclicked);
13
 
14
     inline bool isRootMenu() const {
15
         return myIsRootMenu;
16
     }
17
 
18
-    void setContextual(const bool theValue) {
19
-        myIsContextual = theValue;
20
-    }
21
+    ST_CPPEXPORT void setContextual(const bool theValue);
22
 
23
     inline bool isActive() const {
24
         return myIsActive;
25
sview-15_10.tar.gz/include/StGLWidgets/StGLMenuCheckbox.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMenuCheckbox.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMenuItem.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMenuItem.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMenuProgram.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMenuProgram.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMenuRadioButton.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMenuRadioButton.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMessageBox.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMessageBox.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLMsgStack.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLMsgStack.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLOpenFile.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLOpenFile.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLPlayList.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLPlayList.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLRadioButton.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLRadioButton.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLRadioButtonFloat32.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLRadioButtonFloat32.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLRadioButtonTextured.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLRadioButtonTextured.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLRangeFieldFloat32.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLRangeFieldFloat32.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLRootWidget.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLRootWidget.h Changed
42
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -18,6 +19,8 @@
8
 template<> inline void StArray<StGLNamedTexture>::sort() {}
9
 typedef StArray<StGLNamedTexture> StGLTextureArray;
10
 class StGLMenuProgram;
11
+class StGLTextProgram;
12
+class StGLTextBorderProgram;
13
 
14
 /**
15
  * Full OpenGL-window widget, must be ROOT for other widgets.
16
@@ -109,6 +112,16 @@
17
     ST_LOCAL StGLMenuProgram& getMenuProgram() { return *myMenuProgram; }
18
 
19
     /**
20
+     * Get shared text program instance.
21
+     */
22
+    ST_LOCAL StGLTextProgram& getTextProgram() { return *myTextProgram; }
23
+
24
+    /**
25
+     * Get shared text border program instance.
26
+     */
27
+    ST_LOCAL StGLTextBorderProgram& getTextBorderProgram() { return *myTextBorderProgram; }
28
+
29
+    /**
30
      * Return color of standard element.
31
      */
32
     ST_LOCAL const StGLVec4& getColorForElement(const StGLRootWidget::Color theElement) const { return myColors[theElement]; }
33
@@ -434,6 +447,8 @@
34
     StHandle<StGLTextureArray> myCheckboxIcon;
35
     StHandle<StGLTextureArray> myRadioIcon;
36
     StHandle<StGLMenuProgram>  myMenuProgram;
37
+    StHandle<StGLTextProgram>  myTextProgram;
38
+    StHandle<StGLTextBorderProgram> myTextBorderProgram;
39
 
40
     bool                      myIsMobile;      //!< flag indicating mobile device
41
     StMarginsI                myMarginsPx;     //!< active area margins in pixels
42
sview-15_10.tar.gz/include/StGLWidgets/StGLScrollArea.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLScrollArea.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2013-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLShare.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLShare.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLSubtitles.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLSubtitles.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLSwitchTextured.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLSwitchTextured.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2011-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLTable.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLTable.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2014-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLTextArea.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLTextArea.h Changed
29
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -17,6 +18,9 @@
8
 #include <StGLWidgets/StGLShare.h>
9
 #include <StGLWidgets/StGLWidget.h>
10
 
11
+class StGLTextProgram;
12
+class StGLTextBorderProgram;
13
+
14
 /**
15
  * Class implements basic text rendering widget.
16
  */
17
@@ -233,11 +237,6 @@
18
     StGLVertexBuffer     myBorderIVertBuf;
19
     StGLVertexBuffer     myBorderOVertBuf;
20
 
21
-    class StTextProgram;
22
-    class StBorderProgram;
23
-    StGLShare<StTextProgram>   myTextProgram;
24
-    StGLShare<StBorderProgram> myBorderProgram;
25
-
26
         protected:
27
 
28
     StHandle<StGLFont>   myFont;          //!< used font
29
sview-15_11.tar.gz/include/StGLWidgets/StGLTextBorderProgram.h Added
81
 
1
@@ -0,0 +1,79 @@
2
+/**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * See accompanying file license-boost.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt
9
+ */
10
+
11
+#ifndef __StGLTextBorderProgram_h_
12
+#define __StGLTextBorderProgram_h_
13
+
14
+#include <StGL/StGLProgram.h>
15
+#include <StGL/StGLVec.h>
16
+
17
+class StGLMatrix;
18
+
19
+/**
20
+ * GLSL program for rendering border around 2D text.
21
+ */
22
+class StGLTextBorderProgram : public StGLProgram {
23
+
24
+        public:
25
+
26
+    /**
27
+     * Empty constructor.
28
+     */
29
+    ST_CPPEXPORT StGLTextBorderProgram();
30
+
31
+    /**
32
+     * Destructor.
33
+     */
34
+    ST_CPPEXPORT virtual ~StGLTextBorderProgram();
35
+
36
+    /**
37
+     * Return location of vertex attribute defining position.
38
+     */
39
+    ST_LOCAL StGLVarLocation getVVertexLoc() const { return StGLVarLocation(0); }
40
+
41
+    /**
42
+     * Setup projection matrix.
43
+     * @param theCtx     active GL context
44
+     * @param theProjMat projection matrix
45
+     */
46
+    ST_CPPEXPORT void setProjMat(StGLContext&      theCtx,
47
+                                 const StGLMatrix& theProjMat);
48
+
49
+    /**
50
+     * Setup model-view matrix.
51
+     * @param theCtx      active GL context
52
+     * @param theModelMat model-view matrix
53
+     */
54
+    ST_CPPEXPORT void setModelMat(StGLContext&      theCtx,
55
+                                  const StGLMatrix& theModelMat);
56
+
57
+    /**
58
+     * Setup text color.
59
+     * @param theCtx   active GL context
60
+     * @param theColor color
61
+     */
62
+    ST_CPPEXPORT void setColor(StGLContext&    theCtx,
63
+                               const StGLVec4& theColor);
64
+
65
+    /**
66
+     * Initialize program.
67
+     * @param theCtx active GL context
68
+     * @return true if no error
69
+     */
70
+    ST_CPPEXPORT virtual bool init(StGLContext& theCtx);
71
+
72
+        private:
73
+
74
+    StGLVarLocation myUniformProjMat;  //!< location of uniform variable of projection matrix
75
+    StGLVarLocation myUniformModelMat; //!< location of uniform variable of model view matrix
76
+    StGLVarLocation myUniformColor;    //!< location of uniform variable of color value
77
+
78
+};
79
+
80
+#endif // __StGLTextBorderProgram_h_
81
sview-15_11.tar.gz/include/StGLWidgets/StGLTextProgram.h Added
88
 
1
@@ -0,0 +1,86 @@
2
+/**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
+ *
6
+ * Distributed under the Boost Software License, Version 1.0.
7
+ * See accompanying file license-boost.txt or copy at
8
+ * http://www.boost.org/LICENSE_1_0.txt
9
+ */
10
+
11
+#ifndef __StGLTextProgram_h_
12
+#define __StGLTextProgram_h_
13
+
14
+#include <StGL/StGLProgram.h>
15
+#include <StGL/StGLVec.h>
16
+
17
+class StGLMatrix;
18
+
19
+/**
20
+ * GLSL program for rendering textured text.
21
+ * Font texture is expected to be in alpha format
22
+ * (either GL_ALPHA8 or GL_R8 when StGLContext::arbTexRG is available).
23
+ */
24
+class StGLTextProgram : public StGLProgram {
25
+
26
+        public:
27
+
28
+    /**
29
+     * Empty constructor.
30
+     */
31
+    ST_CPPEXPORT StGLTextProgram();
32
+
33
+    /**
34
+     * Destructor.
35
+     */
36
+    ST_CPPEXPORT virtual ~StGLTextProgram();
37
+
38
+    /**
39
+     * Return vertex position attribute location.
40
+     */
41
+    ST_LOCAL StGLVarLocation getVVertexLoc()   const { return StGLVarLocation(0); }
42
+
43
+    /**
44
+     * Return vertex texture coordinates attribute location.
45
+     */
46
+    ST_LOCAL StGLVarLocation getVTexCoordLoc() const { return StGLVarLocation(1); }
47
+
48
+    /**
49
+     * Setup projection matrix.
50
+     * @param theCtx     active GL context
51
+     * @param theProjMat projection matrix
52
+     */
53
+    ST_CPPEXPORT void setProjMat(StGLContext&      theCtx,
54
+                                 const StGLMatrix& theProjMat);
55
+
56
+    /**
57
+     * Setup model-view matrix.
58
+     * @param theCtx      active GL context
59
+     * @param theModelMat model-view matrix
60
+     */
61
+    ST_CPPEXPORT void setModelMat(StGLContext&      theCtx,
62
+                                  const StGLMatrix& theModelMat);
63
+
64
+    /**
65
+     * Setup text color.
66
+     * @param theCtx   active GL context
67
+     * @param theColor color
68
+     */
69
+    ST_CPPEXPORT void setColor(StGLContext&    theCtx,
70
+                               const StGLVec4& theColor);
71
+
72
+    /**
73
+     * Initialize program.
74
+     * @param theCtx active GL context
75
+     * @return true if no error
76
+     */
77
+    ST_CPPEXPORT virtual bool init(StGLContext& theCtx);
78
+
79
+        private:
80
+
81
+    StGLVarLocation myUniformProjMat;  //!< location of uniform variable of projection matrix
82
+    StGLVarLocation myUniformModelMat; //!< location of uniform variable of model view matrix
83
+    StGLVarLocation myUniformColor;    //!< location of uniform variable of color value
84
+
85
+};
86
+
87
+#endif // __StGLTextProgram_h_
88
sview-15_10.tar.gz/include/StGLWidgets/StGLTextureButton.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLTextureButton.h Changed
24
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
@@ -43,6 +44,16 @@
8
     ST_CPPEXPORT virtual ~StGLTextureButton();
9
 
10
     /**
11
+     * Return scale factor to be applied to the widget opacity, 1.0 by default.
12
+     */
13
+    ST_LOCAL float getOpacityScale() const { return myOpacityScale; }
14
+
15
+    /**
16
+     * Setup scale factor to be applied to the widget opacity.
17
+     */
18
+    ST_LOCAL void setOpacityScale(const float theValue) { myOpacityScale = theValue; }
19
+
20
+    /**
21
      * Setup color for alpha texture.
22
      */
23
     ST_LOCAL void setColor(const StGLVec4& theColor) {
24
sview-15_10.tar.gz/include/StGLWidgets/StGLWidget.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLWidget.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StGLWidgetList.h -> sview-15_11.tar.gz/include/StGLWidgets/StGLWidgetList.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2009-2013 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StGLWidgets/StSubQueue.h -> sview-15_11.tar.gz/include/StGLWidgets/StSubQueue.h Changed
7
 
1
@@ -1,4 +1,5 @@
2
 /**
3
+ * StGLWidgets, small C++ toolkit for writing GUI using OpenGL.
4
  * Copyright © 2010-2014 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
sview-15_10.tar.gz/include/StImage/StImage.h -> sview-15_11.tar.gz/include/StImage/StImage.h Changed
132
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2010-2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -11,6 +11,40 @@
9
 
10
 #include "StImagePlane.h"
11
 
12
+/**
13
+ * Interface to share arbitrary memory buffer using reference counter.
14
+ */
15
+class StBufferCounter {
16
+
17
+        public:
18
+
19
+    /**
20
+     * Empty constructor.
21
+     */
22
+    StBufferCounter() {}
23
+
24
+    /**
25
+     * Create the new reference (e.g. increment counter).
26
+     * If theOther has the same type, than the ref counter will be reused.
27
+     * Otherwise then new counter will be allocated.
28
+     */
29
+    virtual void createReference(StHandle<StBufferCounter>& theOther) const = 0;
30
+
31
+    /**
32
+     * Release current reference.
33
+     */
34
+    virtual void releaseReference() = 0;
35
+
36
+    /**
37
+     * Destructor.
38
+     */
39
+    virtual ~StBufferCounter() {}
40
+
41
+};
42
+
43
+/**
44
+ * Class defining 2D image consisting from one or more color planes.
45
+ */
46
 class StImage {
47
 
48
         public: //! @name enumerations
49
@@ -49,7 +83,8 @@
50
     /**
51
      * Initialize as copy (data will be copied!).
52
      */
53
-    ST_CPPEXPORT bool initCopy(const StImage& theCopy);
54
+    ST_CPPEXPORT bool initCopy(const StImage& theCopy,
55
+                               const bool     theIsCompact);
56
 
57
     /**
58
      * Initialize as wrapper (data will not be copied).
59
@@ -57,6 +92,17 @@
60
     ST_CPPEXPORT bool initWrapper(const StImage& theCopy);
61
 
62
     /**
63
+     * Initialize as reference to the shared buffer.
64
+     */
65
+    ST_CPPEXPORT bool initReference(const StImage& theCopy);
66
+
67
+    /**
68
+     * Initialize as reference to the shared buffer.
69
+     */
70
+    ST_CPPEXPORT bool initReference(const StImage&                   theCopy,
71
+                                    const StHandle<StBufferCounter>& theRef);
72
+
73
+    /**
74
      * Initialize as wrapper of input data in RGB format
75
      * or tries to convert data to RGB.
76
      */
77
@@ -70,7 +116,8 @@
78
                                      const int theSeparationDx,
79
                                      const int theSeparationDy);
80
 
81
-    ST_CPPEXPORT bool fill(const StImage& theCopy);
82
+    ST_CPPEXPORT bool fill(const StImage& theCopy,
83
+                           const bool     theIsCompact);
84
 
85
     /**
86
      * Advanced initializer for further scaling - creates an image from specified one with:
87
@@ -159,6 +206,13 @@
88
     }
89
 
90
     /**
91
+     * Return true if rows are packed in top-bottom order.
92
+     */
93
+    ST_LOCAL bool isTopDown() const {
94
+        return myPlanes[0].isTopDown();
95
+    }
96
+
97
+    /**
98
      * @return image width in pixels.
99
      */
100
     inline size_t getSizeX() const {
101
@@ -206,8 +260,21 @@
102
      */
103
     ST_CPPEXPORT bool isNull() const;
104
 
105
+    /**
106
+     * Release all color planes and reference counter.
107
+     */
108
     ST_CPPEXPORT void nullify();
109
 
110
+    /**
111
+     * Return reference counter for shared memory buffer.
112
+     */
113
+    ST_LOCAL const StHandle<StBufferCounter>& getBufferCounter() const { return myBufCounter; }
114
+
115
+    /**
116
+     * Dangerous method to assign reference counter for shared memory buffer.
117
+     */
118
+    ST_LOCAL void setBufferCounter(const StHandle<StBufferCounter>& theCounter) { myBufCounter = theCounter; }
119
+
120
         protected:
121
 
122
     ST_LOCAL inline StString getDescription() const {
123
@@ -258,6 +325,8 @@
124
     GLfloat       myPAR;        //!< pixel aspect ratio
125
     ImgColorModel myColorModel; //!< color model (RGB/YUV...)
126
     ImgColorScale myColorScale; //!< color scale (range)
127
+    StHandle<StBufferCounter>
128
+                  myBufCounter; //!< reference counter for shared memory buffer
129
 
130
 };
131
 
132
sview-15_10.tar.gz/include/StImage/StImageFile.h -> sview-15_11.tar.gz/include/StImage/StImageFile.h Changed
110
 
1
@@ -10,6 +10,7 @@
2
 #define __StImageFile_h_
3
 
4
 #include <StTemplates/StHandle.h>
5
+#include <StStrings/StDictionary.h>
6
 #include <StGLStereo/StFormatEnum.h>
7
 
8
 #include "StImage.h"
9
@@ -20,6 +21,12 @@
10
 class StImageFile;
11
 ST_DEFINE_HANDLE(StImageFile, StImage);
12
 
13
+class StImageFileCounter;
14
+ST_DEFINE_HANDLE(StImageFileCounter, StBufferCounter);
15
+
16
+/**
17
+ * Interface extending StImage with load/save capabilities.
18
+ */
19
 class StImageFile : public StImage {
20
 
21
         public:
22
@@ -74,18 +81,32 @@
23
     /**
24
      * @return the error description occured on load/save operations.
25
      */
26
-    inline const StString& getState() const {
27
+    ST_LOCAL const StString& getState() const {
28
         return myStateDescr;
29
     }
30
 
31
-    inline StString& changeState() {
32
+    ST_LOCAL StString& changeState() {
33
         return myStateDescr;
34
     }
35
 
36
-    inline void setState(const StString& theDescr = StString()) {
37
+    ST_LOCAL void setState(const StString& theDescr = StString()) {
38
         myStateDescr = theDescr;
39
     }
40
 
41
+    /**
42
+     * Return metadata associated with image.
43
+     */
44
+    ST_LOCAL const StDictionary& getMetadata() const {
45
+        return myMetadata;
46
+    }
47
+
48
+    /**
49
+     * Assign new metadata.
50
+     */
51
+    ST_LOCAL void setMetadata(const StDictionary& theDict) {
52
+        myMetadata = theDict;
53
+    }
54
+
55
     ST_LOCAL StFormat getFormat() const {
56
         return mySrcFormat;
57
     }
58
@@ -127,8 +148,49 @@
59
 
60
         protected:
61
 
62
-    StString myStateDescr;
63
-    StFormat mySrcFormat;
64
+    StDictionary myMetadata;
65
+    StString     myStateDescr;
66
+    StFormat     mySrcFormat;
67
+
68
+};
69
+
70
+/**
71
+ * Define reference-counted StImageFile buffer for StImage.
72
+ */
73
+class StImageFileCounter : public StBufferCounter {
74
+
75
+        public:
76
+
77
+    /**
78
+     * Empty constructor.
79
+     */
80
+    ST_LOCAL StImageFileCounter() {}
81
+
82
+    /**
83
+     * Main constructor.
84
+     */
85
+    ST_LOCAL StImageFileCounter(const StHandle<StImage>& theImage) : myImageFile(theImage) {}
86
+
87
+    /**
88
+     * Create the new reference (e.g. increment counter).
89
+     * If theOther has the same type, than the ref counter will be reused.
90
+     * Otherwise then new counter will be allocated.
91
+     */
92
+    ST_CPPEXPORT virtual void createReference(StHandle<StBufferCounter>& theOther) const;
93
+
94
+    /**
95
+     * Release current reference.
96
+     */
97
+    ST_CPPEXPORT virtual void releaseReference();
98
+
99
+    /**
100
+     * Release reference counter.
101
+     */
102
+    ST_CPPEXPORT virtual ~StImageFileCounter();
103
+
104
+        private:
105
+
106
+    StHandle<StImage> myImageFile;
107
 
108
 };
109
 
110
sview-15_10.tar.gz/include/StImage/StImagePlane.h -> sview-15_11.tar.gz/include/StImage/StImagePlane.h Changed
54
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2010-2013 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2010-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
@@ -30,8 +30,10 @@
9
         ImgBGR,         //!< same as RGB but with different components order
10
         ImgRGB32,       //!< 4 bytes packed RGB image plane (1 byte is dummy)
11
         ImgBGR32,       //!< same as RGB but with different components order
12
+        ImgRGB48,       //!< 6 bytes packed RGB image plane
13
         ImgRGBA,        //!< 4 bytes packed RGBA image plane
14
         ImgBGRA,        //!< same as RGBA but with different components order
15
+        ImgRGBA64,      //!< 8 bytes packed RGBA image plane
16
         ImgGrayF,       //!< 1 float  (4-bytes) per pixel (1-component plane)
17
         ImgRGBF,        //!< 3 floats (12-bytes) RGB image plane
18
         ImgBGRF,        //!< same as RGBF but with different components order
19
@@ -106,6 +108,14 @@
20
         return &myDataPtr[mySizeRowBytes * theRow + mySizeBPP * theCol];
21
     }
22
 
23
+    /**
24
+     * @return data pointer to requested position.
25
+     */
26
+    inline GLubyte* accessData(const size_t theRow = 0, const size_t theCol = 0) const {
27
+        ST_DEBUG_ASSERT((myDataPtr != NULL) && (theRow < mySizeY) && (theCol < mySizeX));
28
+        return &myDataPtr[mySizeRowBytes * theRow + mySizeBPP * theCol];
29
+    }
30
+
31
     inline GLubyte getFirstByte(const size_t theRow, const size_t theCol) const {
32
         return *getData(theRow, theCol);
33
     }
34
@@ -240,7 +250,8 @@
35
     /**
36
      * Initialize as copy (data will be copied!).
37
      */
38
-    ST_CPPEXPORT bool initCopy(const StImagePlane& theCopy);
39
+    ST_CPPEXPORT bool initCopy(const StImagePlane& theCopy,
40
+                               const bool          theIsCompact);
41
 
42
     /**
43
      * Initialize as wrapper (data will not be copied).
44
@@ -256,7 +267,8 @@
45
                                      const int theSeparationDy = 0,
46
                                      const int theValue = 0);
47
 
48
-    ST_CPPEXPORT bool fill(const StImagePlane& theCopy);
49
+    ST_CPPEXPORT bool fill(const StImagePlane& theCopy,
50
+                           const bool          theIsCompact);
51
 
52
     /**
53
      * Smart method to correctly deallocate image plane.
54
sview-15_10.tar.gz/include/StThreads/StCondition.h -> sview-15_11.tar.gz/include/StThreads/StCondition.h Changed
8
 
1
@@ -1,5 +1,5 @@
2
 /**
3
- * Copyright © 2009-2014 Kirill Gavrilov <kirill@sview.ru>
4
+ * Copyright © 2009-2015 Kirill Gavrilov <kirill@sview.ru>
5
  *
6
  * Distributed under the Boost Software License, Version 1.0.
7
  * See accompanying file license-boost.txt or copy at
8
sview-15_10.tar.gz/include/StThreads/StResourceManager.h -> sview-15_11.tar.gz/include/StThreads/StResourceManager.h Changed
27
 
1
@@ -92,8 +92,10 @@
2
      * The list of standard folders.
3
      */
4
     enum FolderId {
5
+        FolderId_SdCard,
6
         FolderId_Downloads,
7
         FolderId_Pictures,
8
+        FolderId_Photos,
9
         FolderId_Music,
10
         FolderId_Videos,
11
         FolderId_NB
12
@@ -127,6 +129,14 @@
13
     }
14
 
15
     /**
16
+     * Assign folder.
17
+     */
18
+    ST_LOCAL void setFolder(const FolderId  theId,
19
+                            const StString& thePath) {
20
+        myFolders[theId] = thePath;
21
+    }
22
+
23
+    /**
24
      * Folder containing user-specific application data.
25
      */
26
     ST_LOCAL const StString& getUserDataFolder() const {
27
sview-15_11.tar.gz/license-CC-BY-4.0.txt Added
395
 
1
@@ -0,0 +1,393 @@
2
+Attribution 4.0 International
3
+
4
+=======================================================================
5
+
6
+Creative Commons Corporation ("Creative Commons") is not a law firm and
7
+does not provide legal services or legal advice. Distribution of
8
+Creative Commons public licenses does not create a lawyer-client or
9
+other relationship. Creative Commons makes its licenses and related
10
+information available on an "as-is" basis. Creative Commons gives no
11
+warranties regarding its licenses, any material licensed under their
12
+terms and conditions, or any related information. Creative Commons
13
+disclaims all liability for damages resulting from their use to the
14
+fullest extent possible.
15
+
16
+Using Creative Commons Public Licenses
17
+
18
+Creative Commons public licenses provide a standard set of terms and
19
+conditions that creators and other rights holders may use to share
20
+original works of authorship and other material subject to copyright
21
+and certain other rights specified in the public license below. The
22
+following considerations are for informational purposes only, are not
23
+exhaustive, and do not form part of our licenses.
24
+
25
+     Considerations for licensors: Our public licenses are
26
+     intended for use by those authorized to give the public
27
+     permission to use material in ways otherwise restricted by
28
+     copyright and certain other rights. Our licenses are
29
+     irrevocable. Licensors should read and understand the terms
30
+     and conditions of the license they choose before applying it.
31
+     Licensors should also secure all rights necessary before
32
+     applying our licenses so that the public can reuse the
33
+     material as expected. Licensors should clearly mark any
34
+     material not subject to the license. This includes other CC-
35
+     licensed material, or material used under an exception or
36
+     limitation to copyright. More considerations for licensors:
37
+   wiki.creativecommons.org/Considerations_for_licensors
38
+
39
+     Considerations for the public: By using one of our public
40
+     licenses, a licensor grants the public permission to use the
41
+     licensed material under specified terms and conditions. If
42
+     the licensor's permission is not necessary for any reason--for
43
+     example, because of any applicable exception or limitation to
44
+     copyright--then that use is not regulated by the license. Our
45
+     licenses grant only permissions under copyright and certain
46
+     other rights that a licensor has authority to grant. Use of
47
+     the licensed material may still be restricted for other
48
+     reasons, including because others have copyright or other
49
+     rights in the material. A licensor may make special requests,
50
+     such as asking that all changes be marked or described.
51
+     Although not required by our licenses, you are encouraged to
52
+     respect those requests where reasonable. More_considerations
53
+     for the public:
54
+   wiki.creativecommons.org/Considerations_for_licensees
55
+
56
+=======================================================================
57
+
58
+Creative Commons Attribution 4.0 International Public License
59
+
60
+By exercising the Licensed Rights (defined below), You accept and agree
61
+to be bound by the terms and conditions of this Creative Commons
62
+Attribution 4.0 International Public License ("Public License"). To the
63
+extent this Public License may be interpreted as a contract, You are
64
+granted the Licensed Rights in consideration of Your acceptance of
65
+these terms and conditions, and the Licensor grants You such rights in
66
+consideration of benefits the Licensor receives from making the
67
+Licensed Material available under these terms and conditions.
68
+
69
+
70
+Section 1 -- Definitions.
71
+
72
+  a. Adapted Material means material subject to Copyright and Similar
73
+     Rights that is derived from or based upon the Licensed Material
74
+     and in which the Licensed Material is translated, altered,
75
+     arranged, transformed, or otherwise modified in a manner requiring
76
+     permission under the Copyright and Similar Rights held by the
77
+     Licensor. For purposes of this Public License, where the Licensed
78
+     Material is a musical work, performance, or sound recording,
79
+     Adapted Material is always produced where the Licensed Material is
80
+     synched in timed relation with a moving image.
81
+
82
+  b. Adapter's License means the license You apply to Your Copyright
83
+     and Similar Rights in Your contributions to Adapted Material in
84
+     accordance with the terms and conditions of this Public License.
85
+
86
+  c. Copyright and Similar Rights means copyright and/or similar rights
87
+     closely related to copyright including, without limitation,
88
+     performance, broadcast, sound recording, and Sui Generis Database
89
+     Rights, without regard to how the rights are labeled or
90
+     categorized. For purposes of this Public License, the rights
91
+     specified in Section 2(b)(1)-(2) are not Copyright and Similar
92
+     Rights.
93
+
94
+  d. Effective Technological Measures means those measures that, in the
95
+     absence of proper authority, may not be circumvented under laws
96
+     fulfilling obligations under Article 11 of the WIPO Copyright
97
+     Treaty adopted on December 20, 1996, and/or similar international
98
+     agreements.
99
+
100
+  e. Exceptions and Limitations means fair use, fair dealing, and/or
101
+     any other exception or limitation to Copyright and Similar Rights
102
+     that applies to Your use of the Licensed Material.
103
+
104
+  f. Licensed Material means the artistic or literary work, database,
105
+     or other material to which the Licensor applied this Public
106
+     License.
107
+
108
+  g. Licensed Rights means the rights granted to You subject to the
109
+     terms and conditions of this Public License, which are limited to
110
+     all Copyright and Similar Rights that apply to Your use of the
111
+     Licensed Material and that the Licensor has authority to license.
112
+
113
+  h. Licensor means the individual(s) or entity(ies) granting rights
114
+     under this Public License.
115
+
116
+  i. Share means to provide material to the public by any means or
117
+     process that requires permission under the Licensed Rights, such
118
+     as reproduction, public display, public performance, distribution,
119
+     dissemination, communication, or importation, and to make material
120
+     available to the public including in ways that members of the
121
+     public may access the material from a place and at a time
122
+     individually chosen by them.
123
+
124
+  j. Sui Generis Database Rights means rights other than copyright
125
+     resulting from Directive 96/9/EC of the European Parliament and of
126
+     the Council of 11 March 1996 on the legal protection of databases,
127
+     as amended and/or succeeded, as well as other essentially
128
+     equivalent rights anywhere in the world.
129
+
130
+  k. You means the individual or entity exercising the Licensed Rights
131
+     under this Public License. Your has a corresponding meaning.
132
+
133
+
134
+Section 2 -- Scope.
135
+
136
+  a. License grant.
137
+
138
+       1. Subject to the terms and conditions of this Public License,
139
+          the Licensor hereby grants You a worldwide, royalty-free,
140
+          non-sublicensable, non-exclusive, irrevocable license to
141
+          exercise the Licensed Rights in the Licensed Material to:
142
+
143
+            a. reproduce and Share the Licensed Material, in whole or
144
+               in part; and
145
+
146
+            b. produce, reproduce, and Share Adapted Material.
147
+
148
+       2. Exceptions and Limitations. For the avoidance of doubt, where
149
+          Exceptions and Limitations apply to Your use, this Public
150
+          License does not apply, and You do not need to comply with
151
+          its terms and conditions.
152
+
153
+       3. Term. The term of this Public License is specified in Section
154
+          6(a).
155
+
156
+       4. Media and formats; technical modifications allowed. The
157
+          Licensor authorizes You to exercise the Licensed Rights in
158
+          all media and formats whether now known or hereafter created,
159
+          and to make technical modifications necessary to do so. The
160
+          Licensor waives and/or agrees not to assert any right or
161
+          authority to forbid You from making technical modifications
162
+          necessary to exercise the Licensed Rights, including
163
+          technical modifications necessary to circumvent Effective
164
+          Technological Measures. For purposes of this Public License,
165
+          simply making modifications authorized by this Section 2(a)
166
+          (4) never produces Adapted Material.
167
+
168
+       5. Downstream recipients.
169
+
170
+            a. Offer from the Licensor -- Licensed Material. Every
171
+               recipient of the Licensed Material automatically
172
+               receives an offer from the Licensor to exercise the
173
+               Licensed Rights under the terms and conditions of this
174
+               Public License.
175
+
176
+            b. No downstream restrictions. You may not offer or impose
177
+               any additional or different terms or conditions on, or
178
+               apply any Effective Technological Measures to, the
179
+               Licensed Material if doing so restricts exercise of the
180
+               Licensed Rights by any recipient of the Licensed
181
+               Material.
182
+
183
+       6. No endorsement. Nothing in this Public License constitutes or
184
+          may be construed as permission to assert or imply that You
185
+          are, or that Your use of the Licensed Material is, connected
186
+          with, or sponsored, endorsed, or granted official status by,
187
+          the Licensor or others designated to receive attribution as
188
+          provided in Section 3(a)(1)(A)(i).
189
+
190
+  b. Other rights.
191
+
192
+       1. Moral rights, such as the right of integrity, are not
193
+          licensed under this Public License, nor are publicity,
194
+          privacy, and/or other similar personality rights; however, to
195
+          the extent possible, the Licensor waives and/or agrees not to
196
+          assert any such rights held by the Licensor to the limited
197
+          extent necessary to allow You to exercise the Licensed
198
+          Rights, but not otherwise.
199
+
200
+       2. Patent and trademark rights are not licensed under this
201
+          Public License.
202
+
203
+       3. To the extent possible, the Licensor waives any right to
204
+          collect royalties from You for the exercise of the Licensed
205
+          Rights, whether directly or through a collecting society
206
+          under any voluntary or waivable statutory or compulsory
207
+          licensing scheme. In all other cases the Licensor expressly
208
+          reserves any right to collect such royalties.
209
+
210
+
211
+Section 3 -- License Conditions.
212
+
213
+Your exercise of the Licensed Rights is expressly made subject to the
214
+following conditions.
215
+
216
+  a. Attribution.
217
+
218
+       1. If You Share the Licensed Material (including in modified
219
+          form), You must:
220
+
221
+            a. retain the following if it is supplied by the Licensor
222
+               with the Licensed Material:
223
+
224
+                 i. identification of the creator(s) of the Licensed
225
+                    Material and any others designated to receive
226
+                    attribution, in any reasonable manner requested by
227
+                    the Licensor (including by pseudonym if
228
+                    designated);
229
+
230
+                ii. a copyright notice;
231
+
232
+               iii. a notice that refers to this Public License;
233
+
234
+                iv. a notice that refers to the disclaimer of
235
+                    warranties;
236
+
237
+                 v. a URI or hyperlink to the Licensed Material to the
238
+                    extent reasonably practicable;
239
+
240
+            b. indicate if You modified the Licensed Material and
241
+               retain an indication of any previous modifications; and
242
+
243
+            c. indicate the Licensed Material is licensed under this
244
+               Public License, and include the text of, or the URI or
245
+               hyperlink to, this Public License.
246
+
247
+       2. You may satisfy the conditions in Section 3(a)(1) in any
248
+          reasonable manner based on the medium, means, and context in
249
+          which You Share the Licensed Material. For example, it may be
250
+          reasonable to satisfy the conditions by providing a URI or
251
+          hyperlink to a resource that includes the required
252
+          information.
253
+
254
+       3. If requested by the Licensor, You must remove any of the
255
+          information required by Section 3(a)(1)(A) to the extent
256
+          reasonably practicable.
257
+
258
+       4. If You Share Adapted Material You produce, the Adapter's
259
+          License You apply must not prevent recipients of the Adapted
260
+          Material from complying with this Public License.
261
+
262
+
263
+Section 4 -- Sui Generis Database Rights.
264
+
265
+Where the Licensed Rights include Sui Generis Database Rights that
266
+apply to Your use of the Licensed Material:
267
+
268
+  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
269
+     to extract, reuse, reproduce, and Share all or a substantial
270
+     portion of the contents of the database;
271
+
272
+  b. if You include all or a substantial portion of the database
273
+     contents in a database in which You have Sui Generis Database
274
+     Rights, then the database in which You have Sui Generis Database
275
+     Rights (but not its individual contents) is Adapted Material; and
276
+
277
+  c. You must comply with the conditions in Section 3(a) if You Share
278
+     all or a substantial portion of the contents of the database.
279
+
280
+For the avoidance of doubt, this Section 4 supplements and does not
281
+replace Your obligations under this Public License where the Licensed
282
+Rights include other Copyright and Similar Rights.
283
+
284
+
285
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
286
+
287
+  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
288
+     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
289
+     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
290
+     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
291
+     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
292
+     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
293
+     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
294
+     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
295
+     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
296
+     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
297
+
298
+  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
299
+     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
300
+     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
301
+     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
302
+     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
303
+     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
304
+     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
305
+     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
306
+     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
307
+
308
+  c. The disclaimer of warranties and limitation of liability provided
309
+     above shall be interpreted in a manner that, to the extent
310
+     possible, most closely approximates an absolute disclaimer and
311
+     waiver of all liability.
312
+
313
+
314
+Section 6 -- Term and Termination.
315
+
316
+  a. This Public License applies for the term of the Copyright and
317
+     Similar Rights licensed here. However, if You fail to comply with
318
+     this Public License, then Your rights under this Public License
319
+     terminate automatically.
320
+
321
+  b. Where Your right to use the Licensed Material has terminated under
322
+     Section 6(a), it reinstates:
323
+
324
+       1. automatically as of the date the violation is cured, provided
325
+          it is cured within 30 days of Your discovery of the
326
+          violation; or
327
+
328
+       2. upon express reinstatement by the Licensor.
329
+
330
+     For the avoidance of doubt, this Section 6(b) does not affect any
331
+     right the Licensor may have to seek remedies for Your violations
332
+     of this Public License.
333
+
334
+  c. For the avoidance of doubt, the Licensor may also offer the
335
+     Licensed Material under separate terms or conditions or stop
336
+     distributing the Licensed Material at any time; however, doing so
337
+     will not terminate this Public License.
338
+
339
+  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
340
+     License.
341
+
342
+
343
+Section 7 -- Other Terms and Conditions.
344
+
345
+  a. The Licensor shall not be bound by any additional or different
346
+     terms or conditions communicated by You unless expressly agreed.
347
+
348
+  b. Any arrangements, understandings, or agreements regarding the
349
+     Licensed Material not stated herein are separate from and
350
+     independent of the terms and conditions of this Public License.
351
+
352
+
353
+Section 8 -- Interpretation.
354
+
355
+  a. For the avoidance of doubt, this Public License does not, and
356
+     shall not be interpreted to, reduce, limit, restrict, or impose
357
+     conditions on any use of the Licensed Material that could lawfully
358
+     be made without permission under this Public License.
359
+
360
+  b. To the extent possible, if any provision of this Public License is
361
+     deemed unenforceable, it shall be automatically reformed to the
362
+     minimum extent necessary to make it enforceable. If the provision
363
+     cannot be reformed, it shall be severed from this Public License
364
+     without affecting the enforceability of the remaining terms and
365
+     conditions.
366
+
367
+  c. No term or condition of this Public License will be waived and no
368
+     failure to comply consented to unless expressly agreed to by the
369
+     Licensor.
370
+
371
+  d. Nothing in this Public License constitutes or may be interpreted
372
+     as a limitation upon, or waiver of, any privileges and immunities
373
+     that apply to the Licensor or You, including from the legal
374
+     processes of any jurisdiction or authority.
375
+
376
+
377
+=======================================================================
378
+
379
+Creative Commons is not a party to its public licenses.
380
+Notwithstanding, Creative Commons may elect to apply one of its public
381
+licenses to material it publishes and in those instances will be
382
+considered the "Licensor." Except for the limited purpose of indicating
383
+that material is shared under a Creative Commons public license or as
384
+otherwise permitted by the Creative Commons policies published at
385
+creativecommons.org/policies, Creative Commons does not authorize the
386
+use of the trademark "Creative Commons" or any other trademark or logo
387
+of Creative Commons without its prior written consent including,
388
+without limitation, in connection with any unauthorized modifications
389
+to any of its public licenses or any other arrangements,
390
+understandings, or agreements concerning use of licensed material. For
391
+the avoidance of doubt, this paragraph does not form part of the public
392
+licenses.
393
+
394
+Creative Commons may be contacted at creativecommons.org.
395
sview-15_10.tar.gz/sview/AndroidManifest.xml -> sview-15_11.tar.gz/sview/AndroidManifest.xml Changed
109
 
1
@@ -1,51 +1,11 @@
2
 <?xml version="1.0" encoding="utf-8"?>
3
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
4
           package="com.sview"
5
-          android:versionCode="8"
6
-          android:versionName="15.10">
7
+          android:versionCode="10"
8
+          android:versionName="15.11">
9
     <application android:label="@string/app_name"
10
                  android:hasCode="true"
11
                  android:icon="@drawable/ic_launcher">
12
-        <!-- <uses-library android:name="com.lge.real3d"
13
-                      android:required="false" />
14
-        <uses-library android:name="jp.co.sharp.android.stereo3dlcd"
15
-                      android:required="false" />  -->
16
-        <!-- Image Viewer -->
17
-        <activity android:name="com.sview.StImageActivity"
18
-                  android:label="@string/app_image_name"
19
-                  android:launchMode="singleTask"
20
-                  android:configChanges="orientation|keyboardHidden|screenSize"
21
-                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
22
-                  <!-- android:documentLaunchMode="always" - available since Android 5.0 -->
23
-            <!-- Tell NativeActivity the name of or .so -->
24
-            <meta-data android:name="android.app.lib_name" android:value="sview" />
25
-            <intent-filter>
26
-                <action android:name="android.intent.action.VIEW" />
27
-                <category android:name="android.intent.category.DEFAULT" />
28
-                <category android:name="android.intent.category.BROWSABLE" />
29
-                <data android:mimeType="application/vnd.google.panorama360+jpg"/>
30
-                <data android:mimeType="image/*"/>
31
-            </intent-filter>
32
-            <intent-filter>
33
-                <action android:name="android.intent.action.VIEW" />
34
-
35
-                <category android:name="android.intent.category.DEFAULT" />
36
-                <category android:name="android.intent.category.BROWSABLE" />
37
-
38
-                <data android:scheme="" />
39
-                <data android:scheme="file" />
40
-                <data android:scheme="ftp" />
41
-                <data android:scheme="content" />
42
-                <data android:scheme="http" />
43
-                <data android:scheme="https" />
44
-                <data android:host="*" />
45
-
46
-                <data android:pathPattern=".*\\.mpo" />
47
-                <data android:pathPattern=".*\\.jps" />
48
-                <data android:pathPattern=".*\\.pns" />
49
-                <data android:pathPattern=".*\\.webp" />
50
-            </intent-filter>
51
-        </activity>
52
         <!-- Movie Player -->
53
         <activity android:name="com.sview.StMovieActivity"
54
                   android:label="@string/app_movie_name"
55
@@ -191,13 +151,51 @@
56
                 <data android:pathPattern=".*\\.WMA" />
57
             </intent-filter>
58
         </activity>
59
+        <!-- Image Viewer -->
60
+        <activity android:name="com.sview.StImageActivity"
61
+                  android:label="@string/app_image_name"
62
+                  android:launchMode="singleTask"
63
+                  android:configChanges="orientation|keyboardHidden|screenSize"
64
+                  android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
65
+                  <!-- android:documentLaunchMode="always" - available since Android 5.0 -->
66
+            <!-- Tell NativeActivity the name of or .so -->
67
+            <meta-data android:name="android.app.lib_name" android:value="sview" />
68
+            <intent-filter>
69
+                <action android:name="android.intent.action.MAIN" />
70
+                <category android:name="android.intent.category.LAUNCHER" />
71
+            </intent-filter>
72
+            <intent-filter>
73
+                <action android:name="android.intent.action.VIEW" />
74
+                <category android:name="android.intent.category.DEFAULT" />
75
+                <category android:name="android.intent.category.BROWSABLE" />
76
+                <data android:mimeType="application/vnd.google.panorama360+jpg"/>
77
+                <data android:mimeType="image/*"/>
78
+            </intent-filter>
79
+            <intent-filter>
80
+                <action android:name="android.intent.action.VIEW" />
81
+
82
+                <category android:name="android.intent.category.DEFAULT" />
83
+                <category android:name="android.intent.category.BROWSABLE" />
84
+
85
+                <data android:scheme="" />
86
+                <data android:scheme="file" />
87
+                <data android:scheme="ftp" />
88
+                <data android:scheme="content" />
89
+                <data android:scheme="http" />
90
+                <data android:scheme="https" />
91
+                <data android:host="*" />
92
+
93
+                <data android:pathPattern=".*\\.mpo" />
94
+                <data android:pathPattern=".*\\.jps" />
95
+                <data android:pathPattern=".*\\.pns" />
96
+                <data android:pathPattern=".*\\.webp" />
97
+            </intent-filter>
98
+        </activity>
99
         <!-- <activity android:name="com.sview.MainActivity" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity> -->
100
     </application>
101
 
102
     <uses-sdk android:minSdkVersion="15" />
103
     <uses-feature android:glEsVersion="0x00020000"/>
104
     <uses-permission android:name="android.permission.INTERNET" />
105
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
106
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
107
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
108
 </manifest> 
109
sview-15_10.tar.gz/sview/StMultiApp.cpp -> sview-15_11.tar.gz/sview/StMultiApp.cpp Changed
108
 
1
@@ -21,6 +21,13 @@
2
         + "Usage: sView [options] - file\n"
3
         + "Available options:\n"
4
           "  --fullscreen         Open fullscreen\n"
5
+          "  --toShowMenu=off     Hide main menu\n"
6
+          "  --toShowTopbar=off   Hide top toolbar\n"
7
+          "  --monitorId=ID       open window on specified monitor\n"
8
+          "  --windowLeft=L       window left   position\n"
9
+          "  --windowTop=T        window top    position\n"
10
+          "  --windowWidth=W      window width  position\n"
11
+          "  --windowHeight=H     window height position\n"
12
           "  --slideshow          Start slideshow\n"
13
           "  --last               Open last file\n"
14
           "  --paused             Open file in paused state\n"
15
@@ -40,7 +47,18 @@
16
             + st::formatToString(StFormat_Rows)          + ", "
17
             + st::formatToString(StFormat_FrameSequence) + "\n"
18
         + "  --left=PATH          Specify source for left view\n"
19
-          "  --right=PATH         Specify source for right view\n";
20
+          "  --right=PATH         Specify source for right view\n"
21
+          "  --webuiCmdPort=PORT  Use http://localhost:PORT for remote control (see --invokeAction).\n"
22
+          "  --invokeAction=ACT   Invoke action on http://localhost:PORT.\n"
23
+          "                       play - play/pause\n"
24
+          "                       mute - mute/unmute audio\n"
25
+          "                       vol?VOLUME - specify volume in percents\n"
26
+          "                       prev,next - play previous/next item in playlist\n"
27
+          "                       fastbwd,fastfwd - seek backward/forward\n"
28
+          "                       quit - close the program\n"
29
+          "                       current?title - print title of currently played item\n"
30
+          "                       fullscreen - switch fullscreen/windowed.\n"
31
+          "                       The full list also includes actions having hot-keys";
32
     return anAboutString;
33
 }
34
 
35
@@ -59,7 +77,72 @@
36
         return NULL;
37
     }
38
 
39
+    // command interface
40
     const StArgumentsMap anArgs = anInfo->getArgumentsMap();
41
+    StArgument anArgCmd  = anArgs["invokeAction"];
42
+    StArgument anArgCmd2 = anArgs["action"];
43
+    StString anAction;
44
+    if(anArgCmd2.isValid()) {
45
+        anAction = anArgCmd2.getValue();
46
+    }
47
+    if(anArgCmd.isValid()) {
48
+        anAction = anArgCmd.getValue();
49
+    }
50
+    if(!anAction.isEmpty()) {
51
+        StString anActLow = anAction;
52
+        anActLow.toLowerCase();
53
+        if(anActLow == "play"
54
+        || anActLow == "pause") {
55
+            anAction = "play_pause";
56
+        } else if(anActLow == "stop") {
57
+            anAction = "stop";
58
+        } else if(anActLow == "mute") {
59
+            anAction = "mute";
60
+        } else if(anActLow == "next"
61
+               || anActLow == "nextitem") {
62
+            anAction = "next";
63
+        } else if(anActLow == "prev"
64
+               || anActLow == "previous"
65
+               || anActLow == "previtem") {
66
+            anAction = "prev";
67
+        } else if(anActLow == "currentid") {
68
+            anAction = "current?id";
69
+        } else if(anActLow == "currenttitle") {
70
+            anAction = "current?title";
71
+        } else if(anAction.isContains('?')) {
72
+            anAction = anAction;
73
+        } else if(anActLow == "fastbwd") {
74
+            anAction = "action?DoSeekLeft";
75
+        } else if(anActLow == "fastfwd") {
76
+            anAction = "action?DoSeekRight";
77
+        } else if(anActLow == "quit"
78
+               || anActLow == "exit") {
79
+            anAction = "action?DoQuit";
80
+        } else if(anActLow == "mono") {
81
+            anAction = "action?DoSrcMono";
82
+        } else if(anActLow == "overunder") {
83
+            anAction = "action?DoSrcOverUnder";
84
+        } else if(anActLow == "sidebyside") {
85
+            anAction = "action?DoSrcSideBySide";
86
+        } else if(anActLow == "fullscreen") {
87
+            anAction = "action?DoFullscreen";
88
+        } else {
89
+            anAction = StString("action?") + anAction;
90
+        }
91
+    }
92
+    if(!anAction.isEmpty()) {
93
+        StArgument anArgCmdPort = anArgs["webuiCmdPort"];
94
+        StString   aPort        = "8080";
95
+        if(anArgCmdPort.isValid()) {
96
+            aPort = anArgCmdPort.getValue();
97
+        }
98
+        StString anUrl     = StString("http://localhost:") + aPort + "/" + anAction;
99
+        StString aResponse = StRawFile::readTextFile(anUrl);
100
+        st::cout << aResponse << "\n";
101
+        return NULL;
102
+    }
103
+
104
+    // select application
105
     const StString ARGUMENT_DRAWER = "in";
106
     StArgument anArgDrawer = anArgs[ARGUMENT_DRAWER];
107
     if(anArgDrawer.isValid()) {
108
sview-15_10.tar.gz/sview/jni/main.cpp -> sview-15_11.tar.gz/sview/jni/main.cpp Changed
65
 
1
@@ -32,6 +32,19 @@
2
     }
3
 
4
     /**
5
+     * Determine StApplication class from file extension.
6
+     */
7
+    ST_LOCAL static StString getStAppClassFromExtension(const StString& theExtension) {
8
+        const StMIMEList aMimeImg(ST_IMAGE_PLUGIN_MIME_CHAR);
9
+        for(size_t aMimeIter = 0; aMimeIter < aMimeImg.size(); ++aMimeIter) {
10
+            if(theExtension.isEqualsIgnoreCase(aMimeImg[aMimeIter].getExtension())) {
11
+                return "image";
12
+            }
13
+        }
14
+        return "video";
15
+    }
16
+
17
+    /**
18
      * Choose and instantiate StApplication.
19
      */
20
     ST_LOCAL virtual void createApplication() override {
21
@@ -43,19 +56,32 @@
22
         myDndPath.clear();
23
 
24
         StHandle<StResourceManager> aResMgr = new StResourceManager(myActivity->assetManager);
25
+        aResMgr->setFolder(StResourceManager::FolderId_SdCard,
26
+                           getStoragePath(myThJniEnv, "sdcard"));
27
+        aResMgr->setFolder(StResourceManager::FolderId_Downloads,
28
+                           getStoragePath(myThJniEnv, "Download"));
29
+        aResMgr->setFolder(StResourceManager::FolderId_Pictures,
30
+                           getStoragePath(myThJniEnv, "Pictures"));
31
+        aResMgr->setFolder(StResourceManager::FolderId_Photos,
32
+                           getStoragePath(myThJniEnv, "DCIM"));
33
+        aResMgr->setFolder(StResourceManager::FolderId_Music,
34
+                           getStoragePath(myThJniEnv, "Music"));
35
+        aResMgr->setFolder(StResourceManager::FolderId_Videos,
36
+                           getStoragePath(myThJniEnv, "Movies"));
37
+
38
+        if(myStAppClass.isEmpty()) {
39
+            myStAppClass = getStAppClassFromExtension(aFileExtension);
40
+        }
41
 
42
-        const StMIMEList aMimeImg(ST_IMAGE_PLUGIN_MIME_CHAR);
43
-        for(size_t aMimeIter = 0; aMimeIter < aMimeImg.size(); ++aMimeIter) {
44
-            if(aFileExtension.isEqualsIgnoreCase(aMimeImg[aMimeIter].getExtension())) {
45
-                StArgumentsMap anArgs = anInfo->getArgumentsMap();
46
-                if(anInfo->isEmpty()) {
47
-                    anArgs.set(StDictEntry("last",    "true"));
48
-                }
49
-                anArgs.set(StDictEntry("toSaveRecent","true"));
50
-                anInfo->setArgumentsMap(anArgs);
51
-                myApp = new StImageViewer(aResMgr, this, anInfo);
52
-                return;
53
+        if(myStAppClass == "image") {
54
+            StArgumentsMap anArgs = anInfo->getArgumentsMap();
55
+            if(anInfo->isEmpty()) {
56
+                anArgs.set(StDictEntry("last",    "true"));
57
             }
58
+            anArgs.set(StDictEntry("toSaveRecent","true"));
59
+            anInfo->setArgumentsMap(anArgs);
60
+            myApp = new StImageViewer(aResMgr, this, anInfo);
61
+            return;
62
         }
63
 
64
         if(anInfo->isEmpty()) {
65
sview-15_10.tar.gz/sview/src/com/sview/StActivity.java -> sview-15_11.tar.gz/sview/src/com/sview/StActivity.java Changed
15
 
1
@@ -240,6 +240,13 @@
2
 //region Methods to be called from C++ level
3
 
4
     /**
5
+     * Virtual method defining StApplication class.
6
+     */
7
+    public String getStAppClass() {
8
+        return null;
9
+    }
10
+
11
+    /**
12
      * Method is called when StAndroidGlue has been created (BEFORE starting application thread!)
13
      * or during destruction.
14
      */
15
sview-15_10.tar.gz/sview/src/com/sview/StImageActivity.java -> sview-15_11.tar.gz/sview/src/com/sview/StImageActivity.java Changed
16
 
1
@@ -13,6 +13,14 @@
2
 public class StImageActivity extends StActivity {
3
 
4
     /**
5
+     * Virtual method defining StApplication class.
6
+     */
7
+    @Override
8
+    public String getStAppClass() {
9
+        return "image";
10
+    }
11
+
12
+    /**
13
      * Create activity.
14
      */
15
     @Override
16
sview-15_10.tar.gz/sview/src/com/sview/StMovieActivity.java -> sview-15_11.tar.gz/sview/src/com/sview/StMovieActivity.java Changed
16
 
1
@@ -13,6 +13,14 @@
2
 public class StMovieActivity extends StActivity {
3
 
4
     /**
5
+     * Virtual method defining StApplication class.
6
+     */
7
+    @Override
8
+    public String getStAppClass() {
9
+        return "video";
10
+    }
11
+
12
+    /**
13
      * Create activity.
14
      */
15
     @Override
16
sview-15_10.tar.gz/sview/sview.cbp -> sview-15_11.tar.gz/sview/sview.cbp Changed
70
 
1
@@ -6,32 +6,6 @@
2
        <Option pch_mode="2" />
3
        <Option compiler="gcc" />
4
        <Build>
5
-           <Target title="WIN_gcc_x86">
6
-               <Option output="../bin/$(TARGET_NAME)/sView" prefix_auto="1" extension_auto="1" />
7
-               <Option working_dir="../bin/$(TARGET_NAME)/" />
8
-               <Option object_output="obj/$(TARGET_NAME)/" />
9
-               <Option type="1" />
10
-               <Option compiler="gcc" />
11
-               <Option parameters="demo.jps" />
12
-               <Compiler>
13
-                   <Add option="-O3" />
14
-                   <Add option="-std=c++0x" />
15
-                   <Add option="-Wall" />
16
-                   <Add option="-g" />
17
-                   <Add option="-mmmx" />
18
-                   <Add option="-msse" />
19
-                   <Add option="-DUNICODE" />
20
-                   <Add option="-DST_DEBUG" />
21
-                   <Add option="-DST_HAVE_STCONFIG" />
22
-               </Compiler>
23
-               <Linker>
24
-                   <Add library="gdi32" />
25
-                   <Add library="user32" />
26
-                   <Add library="kernel32" />
27
-                   <Add library="Comdlg32" />
28
-                   <Add library="Version" />
29
-               </Linker>
30
-           </Target>
31
            <Target title="WIN_vc_x86">
32
                <Option output="../bin/$(TARGET_NAME)/sView" prefix_auto="1" extension_auto="1" />
33
                <Option working_dir="../bin/$(TARGET_NAME)/" />
34
@@ -63,12 +37,12 @@
35
                    <Add after='mt.exe /nologo /manifest &quot;$(TARGET_OUTPUT_FILE).manifest&quot; /manifest &quot;..\dpiAware.manifest&quot; /outputresource:&quot;$(TARGET_OUTPUT_FILE)&quot;;1' />
36
                </ExtraCommands>
37
            </Target>
38
-           <Target title="WIN_vc_x86_DEBUG">
39
+           <Target title="WIN_vc_AMD64_DEBUG">
40
                <Option output="../bin/$(TARGET_NAME)/sView" prefix_auto="1" extension_auto="1" />
41
                <Option working_dir="../bin/$(TARGET_NAME)/" />
42
                <Option object_output="obj/$(TARGET_NAME)/" />
43
                <Option type="1" />
44
-               <Option compiler="msvc10" />
45
+               <Option compiler="windows_sdk_x86_64" />
46
                <Option parameters="demo.jps" />
47
                <Compiler>
48
                    <Add option="/MDd" />
49
@@ -280,9 +254,8 @@
50
        <Unit filename="StMultiApp.cpp" />
51
        <Unit filename="StMultiApp.h" />
52
        <Unit filename="main.cpp">
53
-           <Option target="WIN_gcc_x86" />
54
            <Option target="WIN_vc_x86" />
55
-           <Option target="WIN_vc_x86_DEBUG" />
56
+           <Option target="WIN_vc_AMD64_DEBUG" />
57
            <Option target="WIN_vc_AMD64" />
58
            <Option target="LINUX_gcc" />
59
            <Option target="LINUX_gcc_DEBUG" />
60
@@ -298,8 +271,7 @@
61
            <Option compilerVar="WINDRES" />
62
            <Option target="WIN_vc_x86" />
63
            <Option target="WIN_vc_AMD64" />
64
-           <Option target="WIN_gcc_x86" />
65
-           <Option target="WIN_vc_x86_DEBUG" />
66
+           <Option target="WIN_vc_AMD64_DEBUG" />
67
        </Unit>
68
        <Extensions>
69
            <code_completion />
70
sview-15_10.tar.gz/textures/menuAuto128.png -> sview-15_11.tar.gz/textures/menuAuto128.png Changed
sview-15_10.tar.gz/textures/menuAuto144.png -> sview-15_11.tar.gz/textures/menuAuto144.png Changed
sview-15_10.tar.gz/textures/menuAuto16.png -> sview-15_11.tar.gz/textures/menuAuto16.png Changed
sview-15_10.tar.gz/textures/menuAuto192.png -> sview-15_11.tar.gz/textures/menuAuto192.png Changed
sview-15_10.tar.gz/textures/menuAuto24.png -> sview-15_11.tar.gz/textures/menuAuto24.png Changed
sview-15_10.tar.gz/textures/menuAuto256.png -> sview-15_11.tar.gz/textures/menuAuto256.png Changed
sview-15_10.tar.gz/textures/menuAuto32.png -> sview-15_11.tar.gz/textures/menuAuto32.png Changed
sview-15_10.tar.gz/textures/menuAuto48.png -> sview-15_11.tar.gz/textures/menuAuto48.png Changed
sview-15_10.tar.gz/textures/menuAuto64.png -> sview-15_11.tar.gz/textures/menuAuto64.png Changed
sview-15_10.tar.gz/textures/menuAuto72.png -> sview-15_11.tar.gz/textures/menuAuto72.png Changed
sview-15_10.tar.gz/textures/menuAuto96.png -> sview-15_11.tar.gz/textures/menuAuto96.png Changed
sview-15_10.tar.gz/textures/menuDual128.png -> sview-15_11.tar.gz/textures/menuDual128.png Changed
sview-15_10.tar.gz/textures/menuDual144.png -> sview-15_11.tar.gz/textures/menuDual144.png Changed
sview-15_10.tar.gz/textures/menuDual16.png -> sview-15_11.tar.gz/textures/menuDual16.png Changed
sview-15_10.tar.gz/textures/menuDual192.png -> sview-15_11.tar.gz/textures/menuDual192.png Changed
sview-15_10.tar.gz/textures/menuDual24.png -> sview-15_11.tar.gz/textures/menuDual24.png Changed
sview-15_10.tar.gz/textures/menuDual256.png -> sview-15_11.tar.gz/textures/menuDual256.png Changed
sview-15_10.tar.gz/textures/menuDual32.png -> sview-15_11.tar.gz/textures/menuDual32.png Changed
sview-15_10.tar.gz/textures/menuDual48.png -> sview-15_11.tar.gz/textures/menuDual48.png Changed
sview-15_10.tar.gz/textures/menuDual64.png -> sview-15_11.tar.gz/textures/menuDual64.png Changed
sview-15_10.tar.gz/textures/menuDual72.png -> sview-15_11.tar.gz/textures/menuDual72.png Changed
sview-15_10.tar.gz/textures/menuDual96.png -> sview-15_11.tar.gz/textures/menuDual96.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR128.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR128.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR144.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR144.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR16.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR16.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR192.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR192.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR24.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR24.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR256.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR256.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR32.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR32.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR48.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR48.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR64.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR64.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR72.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR72.png Changed
sview-15_10.tar.gz/textures/menuFrameSeqLR96.png -> sview-15_11.tar.gz/textures/menuFrameSeqLR96.png Changed
sview-15_10.tar.gz/textures/menuMono128.png -> sview-15_11.tar.gz/textures/menuMono128.png Changed
sview-15_10.tar.gz/textures/menuMono144.png -> sview-15_11.tar.gz/textures/menuMono144.png Changed
sview-15_10.tar.gz/textures/menuMono16.png -> sview-15_11.tar.gz/textures/menuMono16.png Changed
sview-15_10.tar.gz/textures/menuMono192.png -> sview-15_11.tar.gz/textures/menuMono192.png Changed
sview-15_10.tar.gz/textures/menuMono24.png -> sview-15_11.tar.gz/textures/menuMono24.png Changed
sview-15_10.tar.gz/textures/menuMono256.png -> sview-15_11.tar.gz/textures/menuMono256.png Changed
sview-15_10.tar.gz/textures/menuMono32.png -> sview-15_11.tar.gz/textures/menuMono32.png Changed
sview-15_10.tar.gz/textures/menuMono48.png -> sview-15_11.tar.gz/textures/menuMono48.png Changed
sview-15_10.tar.gz/textures/menuMono64.png -> sview-15_11.tar.gz/textures/menuMono64.png Changed
sview-15_10.tar.gz/textures/menuMono72.png -> sview-15_11.tar.gz/textures/menuMono72.png Changed
sview-15_10.tar.gz/textures/menuMono96.png -> sview-15_11.tar.gz/textures/menuMono96.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR128.png -> sview-15_11.tar.gz/textures/menuOverUnderLR128.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR144.png -> sview-15_11.tar.gz/textures/menuOverUnderLR144.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR16.png -> sview-15_11.tar.gz/textures/menuOverUnderLR16.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR192.png -> sview-15_11.tar.gz/textures/menuOverUnderLR192.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR24.png -> sview-15_11.tar.gz/textures/menuOverUnderLR24.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR256.png -> sview-15_11.tar.gz/textures/menuOverUnderLR256.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR32.png -> sview-15_11.tar.gz/textures/menuOverUnderLR32.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR48.png -> sview-15_11.tar.gz/textures/menuOverUnderLR48.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR64.png -> sview-15_11.tar.gz/textures/menuOverUnderLR64.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR72.png -> sview-15_11.tar.gz/textures/menuOverUnderLR72.png Changed
sview-15_10.tar.gz/textures/menuOverUnderLR96.png -> sview-15_11.tar.gz/textures/menuOverUnderLR96.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL128.png -> sview-15_11.tar.gz/textures/menuOverUnderRL128.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL144.png -> sview-15_11.tar.gz/textures/menuOverUnderRL144.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL16.png -> sview-15_11.tar.gz/textures/menuOverUnderRL16.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL192.png -> sview-15_11.tar.gz/textures/menuOverUnderRL192.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL24.png -> sview-15_11.tar.gz/textures/menuOverUnderRL24.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL256.png -> sview-15_11.tar.gz/textures/menuOverUnderRL256.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL32.png -> sview-15_11.tar.gz/textures/menuOverUnderRL32.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL48.png -> sview-15_11.tar.gz/textures/menuOverUnderRL48.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL64.png -> sview-15_11.tar.gz/textures/menuOverUnderRL64.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL72.png -> sview-15_11.tar.gz/textures/menuOverUnderRL72.png Changed
sview-15_10.tar.gz/textures/menuOverUnderRL96.png -> sview-15_11.tar.gz/textures/menuOverUnderRL96.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_128.png -> sview-15_11.tar.gz/textures/menuRatio16_10_128.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_144.png -> sview-15_11.tar.gz/textures/menuRatio16_10_144.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_16.png -> sview-15_11.tar.gz/textures/menuRatio16_10_16.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_192.png -> sview-15_11.tar.gz/textures/menuRatio16_10_192.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_24.png -> sview-15_11.tar.gz/textures/menuRatio16_10_24.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_256.png -> sview-15_11.tar.gz/textures/menuRatio16_10_256.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_32.png -> sview-15_11.tar.gz/textures/menuRatio16_10_32.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_48.png -> sview-15_11.tar.gz/textures/menuRatio16_10_48.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_64.png -> sview-15_11.tar.gz/textures/menuRatio16_10_64.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_72.png -> sview-15_11.tar.gz/textures/menuRatio16_10_72.png Changed
sview-15_10.tar.gz/textures/menuRatio16_10_96.png -> sview-15_11.tar.gz/textures/menuRatio16_10_96.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_128.png -> sview-15_11.tar.gz/textures/menuRatio16_9_128.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_144.png -> sview-15_11.tar.gz/textures/menuRatio16_9_144.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_16.png -> sview-15_11.tar.gz/textures/menuRatio16_9_16.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_192.png -> sview-15_11.tar.gz/textures/menuRatio16_9_192.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_24.png -> sview-15_11.tar.gz/textures/menuRatio16_9_24.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_256.png -> sview-15_11.tar.gz/textures/menuRatio16_9_256.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_32.png -> sview-15_11.tar.gz/textures/menuRatio16_9_32.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_48.png -> sview-15_11.tar.gz/textures/menuRatio16_9_48.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_64.png -> sview-15_11.tar.gz/textures/menuRatio16_9_64.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_72.png -> sview-15_11.tar.gz/textures/menuRatio16_9_72.png Changed
sview-15_10.tar.gz/textures/menuRatio16_9_96.png -> sview-15_11.tar.gz/textures/menuRatio16_9_96.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_128.png -> sview-15_11.tar.gz/textures/menuRatio1_1_128.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_144.png -> sview-15_11.tar.gz/textures/menuRatio1_1_144.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_16.png -> sview-15_11.tar.gz/textures/menuRatio1_1_16.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_192.png -> sview-15_11.tar.gz/textures/menuRatio1_1_192.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_24.png -> sview-15_11.tar.gz/textures/menuRatio1_1_24.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_256.png -> sview-15_11.tar.gz/textures/menuRatio1_1_256.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_32.png -> sview-15_11.tar.gz/textures/menuRatio1_1_32.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_48.png -> sview-15_11.tar.gz/textures/menuRatio1_1_48.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_64.png -> sview-15_11.tar.gz/textures/menuRatio1_1_64.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_72.png -> sview-15_11.tar.gz/textures/menuRatio1_1_72.png Changed
sview-15_10.tar.gz/textures/menuRatio1_1_96.png -> sview-15_11.tar.gz/textures/menuRatio1_1_96.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_128.png -> sview-15_11.tar.gz/textures/menuRatio2_1_128.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_144.png -> sview-15_11.tar.gz/textures/menuRatio2_1_144.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_16.png -> sview-15_11.tar.gz/textures/menuRatio2_1_16.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_192.png -> sview-15_11.tar.gz/textures/menuRatio2_1_192.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_24.png -> sview-15_11.tar.gz/textures/menuRatio2_1_24.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_256.png -> sview-15_11.tar.gz/textures/menuRatio2_1_256.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_32.png -> sview-15_11.tar.gz/textures/menuRatio2_1_32.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_48.png -> sview-15_11.tar.gz/textures/menuRatio2_1_48.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_64.png -> sview-15_11.tar.gz/textures/menuRatio2_1_64.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_72.png -> sview-15_11.tar.gz/textures/menuRatio2_1_72.png Changed
sview-15_10.tar.gz/textures/menuRatio2_1_96.png -> sview-15_11.tar.gz/textures/menuRatio2_1_96.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_128.png -> sview-15_11.tar.gz/textures/menuRatio4_3_128.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_144.png -> sview-15_11.tar.gz/textures/menuRatio4_3_144.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_16.png -> sview-15_11.tar.gz/textures/menuRatio4_3_16.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_192.png -> sview-15_11.tar.gz/textures/menuRatio4_3_192.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_24.png -> sview-15_11.tar.gz/textures/menuRatio4_3_24.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_256.png -> sview-15_11.tar.gz/textures/menuRatio4_3_256.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_32.png -> sview-15_11.tar.gz/textures/menuRatio4_3_32.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_48.png -> sview-15_11.tar.gz/textures/menuRatio4_3_48.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_64.png -> sview-15_11.tar.gz/textures/menuRatio4_3_64.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_72.png -> sview-15_11.tar.gz/textures/menuRatio4_3_72.png Changed
sview-15_10.tar.gz/textures/menuRatio4_3_96.png -> sview-15_11.tar.gz/textures/menuRatio4_3_96.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_128.png -> sview-15_11.tar.gz/textures/menuRatio5_4_128.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_144.png -> sview-15_11.tar.gz/textures/menuRatio5_4_144.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_16.png -> sview-15_11.tar.gz/textures/menuRatio5_4_16.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_192.png -> sview-15_11.tar.gz/textures/menuRatio5_4_192.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_24.png -> sview-15_11.tar.gz/textures/menuRatio5_4_24.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_256.png -> sview-15_11.tar.gz/textures/menuRatio5_4_256.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_32.png -> sview-15_11.tar.gz/textures/menuRatio5_4_32.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_48.png -> sview-15_11.tar.gz/textures/menuRatio5_4_48.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_64.png -> sview-15_11.tar.gz/textures/menuRatio5_4_64.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_72.png -> sview-15_11.tar.gz/textures/menuRatio5_4_72.png Changed
sview-15_10.tar.gz/textures/menuRatio5_4_96.png -> sview-15_11.tar.gz/textures/menuRatio5_4_96.png Changed
sview-15_10.tar.gz/textures/menuRowLR128.png -> sview-15_11.tar.gz/textures/menuRowLR128.png Changed
sview-15_10.tar.gz/textures/menuRowLR144.png -> sview-15_11.tar.gz/textures/menuRowLR144.png Changed
sview-15_10.tar.gz/textures/menuRowLR16.png -> sview-15_11.tar.gz/textures/menuRowLR16.png Changed
sview-15_10.tar.gz/textures/menuRowLR192.png -> sview-15_11.tar.gz/textures/menuRowLR192.png Changed
sview-15_10.tar.gz/textures/menuRowLR24.png -> sview-15_11.tar.gz/textures/menuRowLR24.png Changed
sview-15_10.tar.gz/textures/menuRowLR256.png -> sview-15_11.tar.gz/textures/menuRowLR256.png Changed
sview-15_10.tar.gz/textures/menuRowLR32.png -> sview-15_11.tar.gz/textures/menuRowLR32.png Changed
sview-15_10.tar.gz/textures/menuRowLR48.png -> sview-15_11.tar.gz/textures/menuRowLR48.png Changed
sview-15_10.tar.gz/textures/menuRowLR64.png -> sview-15_11.tar.gz/textures/menuRowLR64.png Changed
sview-15_10.tar.gz/textures/menuRowLR72.png -> sview-15_11.tar.gz/textures/menuRowLR72.png Changed
sview-15_10.tar.gz/textures/menuRowLR96.png -> sview-15_11.tar.gz/textures/menuRowLR96.png Changed
sview-15_10.tar.gz/textures/menuRowRL128.png -> sview-15_11.tar.gz/textures/menuRowRL128.png Changed
sview-15_10.tar.gz/textures/menuRowRL144.png -> sview-15_11.tar.gz/textures/menuRowRL144.png Changed
sview-15_10.tar.gz/textures/menuRowRL16.png -> sview-15_11.tar.gz/textures/menuRowRL16.png Changed
sview-15_10.tar.gz/textures/menuRowRL192.png -> sview-15_11.tar.gz/textures/menuRowRL192.png Changed
sview-15_10.tar.gz/textures/menuRowRL24.png -> sview-15_11.tar.gz/textures/menuRowRL24.png Changed
sview-15_10.tar.gz/textures/menuRowRL256.png -> sview-15_11.tar.gz/textures/menuRowRL256.png Changed
sview-15_10.tar.gz/textures/menuRowRL32.png -> sview-15_11.tar.gz/textures/menuRowRL32.png Changed
sview-15_10.tar.gz/textures/menuRowRL48.png -> sview-15_11.tar.gz/textures/menuRowRL48.png Changed
sview-15_10.tar.gz/textures/menuRowRL64.png -> sview-15_11.tar.gz/textures/menuRowRL64.png Changed
sview-15_10.tar.gz/textures/menuRowRL72.png -> sview-15_11.tar.gz/textures/menuRowRL72.png Changed
sview-15_10.tar.gz/textures/menuRowRL96.png -> sview-15_11.tar.gz/textures/menuRowRL96.png Changed
sview-15_10.tar.gz/textures/menuSbsLR128.png -> sview-15_11.tar.gz/textures/menuSbsLR128.png Changed
sview-15_10.tar.gz/textures/menuSbsLR144.png -> sview-15_11.tar.gz/textures/menuSbsLR144.png Changed
sview-15_10.tar.gz/textures/menuSbsLR16.png -> sview-15_11.tar.gz/textures/menuSbsLR16.png Changed
sview-15_10.tar.gz/textures/menuSbsLR192.png -> sview-15_11.tar.gz/textures/menuSbsLR192.png Changed
sview-15_10.tar.gz/textures/menuSbsLR24.png -> sview-15_11.tar.gz/textures/menuSbsLR24.png Changed
sview-15_10.tar.gz/textures/menuSbsLR256.png -> sview-15_11.tar.gz/textures/menuSbsLR256.png Changed
sview-15_10.tar.gz/textures/menuSbsLR32.png -> sview-15_11.tar.gz/textures/menuSbsLR32.png Changed
sview-15_10.tar.gz/textures/menuSbsLR48.png -> sview-15_11.tar.gz/textures/menuSbsLR48.png Changed
sview-15_10.tar.gz/textures/menuSbsLR64.png -> sview-15_11.tar.gz/textures/menuSbsLR64.png Changed
sview-15_10.tar.gz/textures/menuSbsLR72.png -> sview-15_11.tar.gz/textures/menuSbsLR72.png Changed
sview-15_10.tar.gz/textures/menuSbsLR96.png -> sview-15_11.tar.gz/textures/menuSbsLR96.png Changed
sview-15_10.tar.gz/textures/menuSbsRL128.png -> sview-15_11.tar.gz/textures/menuSbsRL128.png Changed
sview-15_10.tar.gz/textures/menuSbsRL144.png -> sview-15_11.tar.gz/textures/menuSbsRL144.png Changed
sview-15_10.tar.gz/textures/menuSbsRL16.png -> sview-15_11.tar.gz/textures/menuSbsRL16.png Changed
sview-15_10.tar.gz/textures/menuSbsRL192.png -> sview-15_11.tar.gz/textures/menuSbsRL192.png Changed
sview-15_10.tar.gz/textures/menuSbsRL24.png -> sview-15_11.tar.gz/textures/menuSbsRL24.png Changed
sview-15_10.tar.gz/textures/menuSbsRL256.png -> sview-15_11.tar.gz/textures/menuSbsRL256.png Changed
sview-15_10.tar.gz/textures/menuSbsRL32.png -> sview-15_11.tar.gz/textures/menuSbsRL32.png Changed
sview-15_10.tar.gz/textures/menuSbsRL48.png -> sview-15_11.tar.gz/textures/menuSbsRL48.png Changed
sview-15_10.tar.gz/textures/menuSbsRL64.png -> sview-15_11.tar.gz/textures/menuSbsRL64.png Changed
sview-15_10.tar.gz/textures/menuSbsRL72.png -> sview-15_11.tar.gz/textures/menuSbsRL72.png Changed
sview-15_10.tar.gz/textures/menuSbsRL96.png -> sview-15_11.tar.gz/textures/menuSbsRL96.png Changed
sview-15_10.tar.gz/textures/menuTiledLR128.png -> sview-15_11.tar.gz/textures/menuTiledLR128.png Changed
sview-15_10.tar.gz/textures/menuTiledLR144.png -> sview-15_11.tar.gz/textures/menuTiledLR144.png Changed
sview-15_10.tar.gz/textures/menuTiledLR16.png -> sview-15_11.tar.gz/textures/menuTiledLR16.png Changed
sview-15_10.tar.gz/textures/menuTiledLR192.png -> sview-15_11.tar.gz/textures/menuTiledLR192.png Changed
sview-15_10.tar.gz/textures/menuTiledLR24.png -> sview-15_11.tar.gz/textures/menuTiledLR24.png Changed
sview-15_10.tar.gz/textures/menuTiledLR256.png -> sview-15_11.tar.gz/textures/menuTiledLR256.png Changed
sview-15_10.tar.gz/textures/menuTiledLR32.png -> sview-15_11.tar.gz/textures/menuTiledLR32.png Changed
sview-15_10.tar.gz/textures/menuTiledLR48.png -> sview-15_11.tar.gz/textures/menuTiledLR48.png Changed
sview-15_10.tar.gz/textures/menuTiledLR64.png -> sview-15_11.tar.gz/textures/menuTiledLR64.png Changed
sview-15_10.tar.gz/textures/menuTiledLR72.png -> sview-15_11.tar.gz/textures/menuTiledLR72.png Changed
sview-15_10.tar.gz/textures/menuTiledLR96.png -> sview-15_11.tar.gz/textures/menuTiledLR96.png Changed
sview-15_11.tar.gz/texturesSrc/export.sh Added
19
 
1
@@ -0,0 +1,17 @@
2
+#!/bin/bash
3
+# Auxiliary script to export SVG images into grayscale PNG image.
4
+
5
+anSvgName=$1
6
+aPngName=$2
7
+if [ "$aPngName" == "" ]; then aPngName=$1; fi
8
+if [ ! -f "$anSvgName" ]; then anSvgName=${anSvgName}.svg; fi
9
+
10
+aSizeList=(16 24 32 48 64 72 96 128 144 192 256)
11
+for aSize in "${aSizeList[@]}"
12
+do
13
+  rm -f "${aPngName}${aSize}.png"
14
+
15
+  inkscape --file "$anSvgName" --export-area-page --export-height ${aSize} --export-png "${aPngName}${aSize}.tmp.png"
16
+  ffmpeg -i "${aPngName}${aSize}.tmp.png" -pix_fmt gray "${aPngName}${aSize}.png"
17
+  rm -f "${aPngName}${aSize}.tmp.png"
18
+done
19
sview-15_10.tar.gz/texturesSrc/menuRatio.svg -> sview-15_11.tar.gz/texturesSrc/menuRatio.svg Changed
388
 
1
@@ -7,217 +7,34 @@
2
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3
    xmlns:svg="http://www.w3.org/2000/svg"
4
    xmlns="http://www.w3.org/2000/svg"
5
-   xmlns:xlink="http://www.w3.org/1999/xlink"
6
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
7
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
8
    width="16"
9
    height="16"
10
    id="svg2"
11
    version="1.1"
12
-   inkscape:version="0.48.3.1 r9886"
13
+   inkscape:version="0.91 r13725"
14
    sodipodi:docname="menuRatio.svg"
15
    inkscape:export-filename="menuRatio1_1_16.png"
16
    inkscape:export-xdpi="90"
17
    inkscape:export-ydpi="90">
18
   <defs
19
-     id="defs4">
20
-    <linearGradient
21
-       id="linearGradient4713">
22
-      <stop
23
-         id="stop4715"
24
-         offset="0"
25
-         style="stop-color:#000000;stop-opacity:0;" />
26
-      <stop
27
-         style="stop-color:#000000;stop-opacity:0;"
28
-         offset="0.46642813"
29
-         id="stop4717" />
30
-      <stop
31
-         id="stop4719"
32
-         offset="0.47303236"
33
-         style="stop-color:#000000;stop-opacity:1;" />
34
-      <stop
35
-         id="stop4721"
36
-         offset="1"
37
-         style="stop-color:#000000;stop-opacity:1;" />
38
-    </linearGradient>
39
-    <linearGradient
40
-       id="linearGradient4634">
41
-      <stop
42
-         style="stop-color:#000000;stop-opacity:1;"
43
-         offset="0"
44
-         id="stop4636" />
45
-      <stop
46
-         id="stop4642"
47
-         offset="0.46642813"
48
-         style="stop-color:#000000;stop-opacity:1;" />
49
-      <stop
50
-         style="stop-color:#000000;stop-opacity:0;"
51
-         offset="0.47303236"
52
-         id="stop4644" />
53
-      <stop
54
-         style="stop-color:#000000;stop-opacity:0;"
55
-         offset="1"
56
-         id="stop4638" />
57
-    </linearGradient>
58
-    <linearGradient
59
-       inkscape:collect="always"
60
-       xlink:href="#linearGradient4634"
61
-       id="linearGradient4640"
62
-       x1="10.176364"
63
-       y1="7.4030485"
64
-       x2="14.850094"
65
-       y2="7.4030485"
66
-       gradientUnits="userSpaceOnUse" />
67
-    <linearGradient
68
-       inkscape:collect="always"
69
-       xlink:href="#linearGradient4634-3"
70
-       id="linearGradient4640-7"
71
-       x1="10.176364"
72
-       y1="7.4030485"
73
-       x2="14.850094"
74
-       y2="7.4030485"
75
-       gradientUnits="userSpaceOnUse" />
76
-    <linearGradient
77
-       id="linearGradient4634-3">
78
-      <stop
79
-         style="stop-color:#000000;stop-opacity:1;"
80
-         offset="0"
81
-         id="stop4636-4" />
82
-      <stop
83
-         id="stop4642-5"
84
-         offset="0.46642813"
85
-         style="stop-color:#000000;stop-opacity:1;" />
86
-      <stop
87
-         style="stop-color:#000000;stop-opacity:0;"
88
-         offset="0.47303236"
89
-         id="stop4644-5" />
90
-      <stop
91
-         style="stop-color:#000000;stop-opacity:0;"
92
-         offset="1"
93
-         id="stop4638-7" />
94
-    </linearGradient>
95
-    <linearGradient
96
-       inkscape:collect="always"
97
-       xlink:href="#linearGradient4634-3"
98
-       id="linearGradient4662"
99
-       x1="10.176364"
100
-       y1="7.4030485"
101
-       x2="14.850094"
102
-       y2="7.4030485"
103
-       gradientUnits="userSpaceOnUse" />
104
-    <linearGradient
105
-       id="linearGradient4664">
106
-      <stop
107
-         style="stop-color:#000000;stop-opacity:1;"
108
-         offset="0"
109
-         id="stop4666" />
110
-      <stop
111
-         id="stop4668"
112
-         offset="0.46642813"
113
-         style="stop-color:#000000;stop-opacity:1;" />
114
-      <stop
115
-         style="stop-color:#000000;stop-opacity:0;"
116
-         offset="0.47303236"
117
-         id="stop4670" />
118
-      <stop
119
-         style="stop-color:#000000;stop-opacity:0;"
120
-         offset="1"
121
-         id="stop4672" />
122
-    </linearGradient>
123
-    <linearGradient
124
-       gradientTransform="translate(-10.601134,6.9138058)"
125
-       y2="7.4030485"
126
-       x2="14.850094"
127
-       y1="7.4030485"
128
-       x1="10.176364"
129
-       gradientUnits="userSpaceOnUse"
130
-       id="linearGradient4676"
131
-       xlink:href="#linearGradient4713"
132
-       inkscape:collect="always" />
133
-    <linearGradient
134
-       gradientTransform="translate(-9.1593698,6.9138058)"
135
-       y2="7.4030485"
136
-       x2="14.850094"
137
-       y1="7.4030485"
138
-       x1="10.176364"
139
-       gradientUnits="userSpaceOnUse"
140
-       id="linearGradient4676-8"
141
-       xlink:href="#linearGradient4713-2"
142
-       inkscape:collect="always" />
143
-    <linearGradient
144
-       id="linearGradient4713-2">
145
-      <stop
146
-         id="stop4715-9"
147
-         offset="0"
148
-         style="stop-color:#000000;stop-opacity:0;" />
149
-      <stop
150
-         style="stop-color:#000000;stop-opacity:0;"
151
-         offset="0.46642813"
152
-         id="stop4717-9" />
153
-      <stop
154
-         id="stop4719-2"
155
-         offset="0.47303236"
156
-         style="stop-color:#000000;stop-opacity:1;" />
157
-      <stop
158
-         id="stop4721-1"
159
-         offset="1"
160
-         style="stop-color:#000000;stop-opacity:1;" />
161
-    </linearGradient>
162
-    <linearGradient
163
-       gradientTransform="translate(-9.1593698,6.9138058)"
164
-       y2="7.4030485"
165
-       x2="14.850094"
166
-       y1="7.4030485"
167
-       x1="10.176364"
168
-       gradientUnits="userSpaceOnUse"
169
-       id="linearGradient4757"
170
-       xlink:href="#linearGradient4713-2"
171
-       inkscape:collect="always" />
172
-    <linearGradient
173
-       id="linearGradient4759">
174
-      <stop
175
-         id="stop4761"
176
-         offset="0"
177
-         style="stop-color:#000000;stop-opacity:0;" />
178
-      <stop
179
-         style="stop-color:#000000;stop-opacity:0;"
180
-         offset="0.46642813"
181
-         id="stop4763" />
182
-      <stop
183
-         id="stop4765"
184
-         offset="0.47303236"
185
-         style="stop-color:#000000;stop-opacity:1;" />
186
-      <stop
187
-         id="stop4767"
188
-         offset="1"
189
-         style="stop-color:#000000;stop-opacity:1;" />
190
-    </linearGradient>
191
-    <linearGradient
192
-       y2="7.4030485"
193
-       x2="14.850094"
194
-       y1="7.4030485"
195
-       x1="10.176364"
196
-       gradientTransform="translate(-7.0215298,3.6524912)"
197
-       gradientUnits="userSpaceOnUse"
198
-       id="linearGradient4771"
199
-       xlink:href="#linearGradient4713-2"
200
-       inkscape:collect="always" />
201
-  </defs>
202
+     id="defs4" />
203
   <sodipodi:namedview
204
      id="base"
205
      pagecolor="#ffffff"
206
      bordercolor="#666666"
207
      borderopacity="1.0"
208
-     inkscape:pageopacity="0.0"
209
+     inkscape:pageopacity="1"
210
      inkscape:pageshadow="2"
211
-     inkscape:zoom="11.313708"
212
-     inkscape:cx="12.402148"
213
-     inkscape:cy="9.1510743"
214
+     inkscape:zoom="31.999999"
215
+     inkscape:cx="10.632593"
216
+     inkscape:cy="4.9924404"
217
      inkscape:document-units="px"
218
-     inkscape:current-layer="g3161"
219
+     inkscape:current-layer="g3169"
220
      showgrid="false"
221
-     inkscape:window-width="1920"
222
-     inkscape:window-height="1109"
223
+     inkscape:window-width="2560"
224
+     inkscape:window-height="1407"
225
      inkscape:window-x="0"
226
      inkscape:window-y="0"
227
      inkscape:window-maximized="1"
228
@@ -239,14 +56,14 @@
229
      inkscape:groupmode="layer"
230
      id="layer1"
231
      transform="translate(0,-1036.3622)"
232
-     style="display:inline">
233
-    <rect
234
-       style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.99977112;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
235
-       id="rect2985"
236
-       width="15.000229"
237
-       height="15.000229"
238
-       x="0.49988556"
239
-       y="1036.8622" />
240
+     style="display:inline"
241
+     sodipodi:insensitive="true">
242
+    <path
243
+       style="display:inline"
244
+       d="m 14,1038.3622 -12,0 c -0.7333333,0 -1.3333333,0.6 -1.3333333,1.3333 l 0,9.3334 c 0,0.7333 0.6,1.32 1.3333333,1.32 l 12,0 c 0.733333,0 1.333333,-0.5867 1.333333,-1.32 l 0,-9.3334 c 0,-0.7333 -0.6,-1.3333 -1.333333,-1.3333 z m 0,10.6733 -12,0 0,-9.3533 12,0 z"
245
+       id="path4"
246
+       inkscape:connector-curvature="0"
247
+       sodipodi:nodetypes="sssssssssccccc" />
248
   </g>
249
   <g
250
      inkscape:groupmode="layer"
251
@@ -254,12 +71,12 @@
252
      inkscape:label="2.21:1"
253
      style="display:none">
254
     <rect
255
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
256
-       id="rect3163"
257
-       width="12"
258
-       height="6"
259
-       x="2"
260
-       y="5" />
261
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
262
+       id="rect3171-0-7-8-2"
263
+       width="10.375"
264
+       height="4.6945701"
265
+       x="2.8126667"
266
+       y="5.6460648" />
267
   </g>
268
   <g
269
      style="display:none"
270
@@ -267,12 +84,12 @@
271
      id="g3157"
272
      inkscape:groupmode="layer">
273
     <rect
274
-       y="4"
275
-       x="2"
276
-       height="8"
277
-       width="12"
278
-       id="rect3159"
279
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
280
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
281
+       id="rect3171-0-7-8"
282
+       width="10.375"
283
+       height="6.484375"
284
+       x="2.8126667"
285
+       y="4.7511625" />
286
   </g>
287
   <g
288
      inkscape:groupmode="layer"
289
@@ -280,12 +97,12 @@
290
      inkscape:label="16:9"
291
      style="display:none">
292
     <rect
293
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
294
-       id="rect4038-2"
295
-       width="12"
296
-       height="6"
297
-       x="2"
298
-       y="5" />
299
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
300
+       id="rect3171-0-7"
301
+       width="10.375"
302
+       height="5.8359375"
303
+       x="2.8126667"
304
+       y="5.0753813" />
305
   </g>
306
   <g
307
      style="display:none"
308
@@ -293,12 +110,12 @@
309
      id="g3165"
310
      inkscape:groupmode="layer">
311
     <rect
312
-       y="4"
313
-       x="2"
314
-       height="8"
315
-       width="12"
316
-       id="rect3167"
317
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
318
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
319
+       id="rect3171-0"
320
+       width="10.374666"
321
+       height="7.78125"
322
+       x="2.8126667"
323
+       y="4.102725" />
324
   </g>
325
   <g
326
      inkscape:groupmode="layer"
327
@@ -306,12 +123,12 @@
328
      inkscape:label="5:4"
329
      style="display:none">
330
     <rect
331
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
332
-       id="rect3175"
333
-       width="12"
334
-       height="10"
335
-       x="2"
336
-       y="3" />
337
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
338
+       id="rect3171-1"
339
+       width="6.2248001"
340
+       height="7.78125"
341
+       x="4.8875999"
342
+       y="4.102725" />
343
   </g>
344
   <g
345
      inkscape:groupmode="layer"
346
@@ -319,12 +136,12 @@
347
      inkscape:label="1:1"
348
      style="display:inline">
349
     <rect
350
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
351
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
352
        id="rect3171"
353
-       width="12"
354
-       height="12"
355
-       x="2"
356
-       y="2" />
357
+       width="7.78125"
358
+       height="7.78125"
359
+       x="4.109375"
360
+       y="4.102725" />
361
   </g>
362
   <g
363
      inkscape:groupmode="layer"
364
@@ -339,9 +156,9 @@
365
          id="text3898-9"
366
          y="10.883301"
367
          x="5.7239423"
368
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Sans"
369
+         style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"
370
          xml:space="preserve"><tspan
371
-           style="font-weight:bold;stroke:#000000;stroke-opacity:1;-inkscape-font-specification:Sans Bold"
372
+           style="font-weight:bold;-inkscape-font-specification:'Sans Bold';stroke:#000000;stroke-opacity:1"
373
            y="10.883301"
374
            x="5.7239423"
375
            id="tspan3900-9"
376
@@ -351,9 +168,9 @@
377
          id="text3892-7"
378
          y="10.902241"
379
          x="5.7016349"
380
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
381
+         style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none"
382
          xml:space="preserve"><tspan
383
-           style="font-weight:bold;stroke:none;-inkscape-font-specification:Sans Bold"
384
+           style="font-weight:bold;-inkscape-font-specification:'Sans Bold';stroke:none"
385
            y="10.902241"
386
            x="5.7016349"
387
            id="tspan3894-2"
388
sview-15_10.tar.gz/texturesSrc/menuSrcFormat.svg -> sview-15_11.tar.gz/texturesSrc/menuSrcFormat.svg Changed
1442
 
1
@@ -14,7 +14,7 @@
2
    height="16"
3
    id="svg2"
4
    version="1.1"
5
-   inkscape:version="0.48.5 r10040"
6
+   inkscape:version="0.91 r13725"
7
    sodipodi:docname="menuSrcFormat.svg"
8
    inkscape:export-filename="/home/menuSbsLR16.png"
9
    inkscape:export-xdpi="90"
10
@@ -41,91 +41,7 @@
11
          style="stop-color:#000000;stop-opacity:1;" />
12
     </linearGradient>
13
     <linearGradient
14
-       id="linearGradient4634">
15
-      <stop
16
-         style="stop-color:#000000;stop-opacity:1;"
17
-         offset="0"
18
-         id="stop4636" />
19
-      <stop
20
-         id="stop4642"
21
-         offset="0.46642813"
22
-         style="stop-color:#000000;stop-opacity:1;" />
23
-      <stop
24
-         style="stop-color:#000000;stop-opacity:0;"
25
-         offset="0.47303236"
26
-         id="stop4644" />
27
-      <stop
28
-         style="stop-color:#000000;stop-opacity:0;"
29
-         offset="1"
30
-         id="stop4638" />
31
-    </linearGradient>
32
-    <linearGradient
33
-       inkscape:collect="always"
34
-       xlink:href="#linearGradient4634"
35
-       id="linearGradient4640"
36
-       x1="10.176364"
37
-       y1="7.4030485"
38
-       x2="14.850094"
39
-       y2="7.4030485"
40
-       gradientUnits="userSpaceOnUse" />
41
-    <linearGradient
42
-       inkscape:collect="always"
43
-       xlink:href="#linearGradient4634-3"
44
-       id="linearGradient4640-7"
45
-       x1="10.176364"
46
-       y1="7.4030485"
47
-       x2="14.850094"
48
-       y2="7.4030485"
49
-       gradientUnits="userSpaceOnUse" />
50
-    <linearGradient
51
-       id="linearGradient4634-3">
52
-      <stop
53
-         style="stop-color:#000000;stop-opacity:1;"
54
-         offset="0"
55
-         id="stop4636-4" />
56
-      <stop
57
-         id="stop4642-5"
58
-         offset="0.46642813"
59
-         style="stop-color:#000000;stop-opacity:1;" />
60
-      <stop
61
-         style="stop-color:#000000;stop-opacity:0;"
62
-         offset="0.47303236"
63
-         id="stop4644-5" />
64
-      <stop
65
-         style="stop-color:#000000;stop-opacity:0;"
66
-         offset="1"
67
-         id="stop4638-7" />
68
-    </linearGradient>
69
-    <linearGradient
70
-       inkscape:collect="always"
71
-       xlink:href="#linearGradient4634-3"
72
-       id="linearGradient4662"
73
-       x1="10.176364"
74
-       y1="7.4030485"
75
-       x2="14.850094"
76
-       y2="7.4030485"
77
-       gradientUnits="userSpaceOnUse" />
78
-    <linearGradient
79
-       id="linearGradient4664">
80
-      <stop
81
-         style="stop-color:#000000;stop-opacity:1;"
82
-         offset="0"
83
-         id="stop4666" />
84
-      <stop
85
-         id="stop4668"
86
-         offset="0.46642813"
87
-         style="stop-color:#000000;stop-opacity:1;" />
88
-      <stop
89
-         style="stop-color:#000000;stop-opacity:0;"
90
-         offset="0.47303236"
91
-         id="stop4670" />
92
-      <stop
93
-         style="stop-color:#000000;stop-opacity:0;"
94
-         offset="1"
95
-         id="stop4672" />
96
-    </linearGradient>
97
-    <linearGradient
98
-       gradientTransform="translate(-10.601134,6.9138058)"
99
+       gradientTransform="matrix(1.126643,0,0,0.8875926,-11.954742,5.9491429)"
100
        y2="7.4030485"
101
        x2="14.850094"
102
        y1="7.4030485"
103
@@ -135,16 +51,6 @@
104
        xlink:href="#linearGradient4713"
105
        inkscape:collect="always" />
106
     <linearGradient
107
-       gradientTransform="translate(-9.1593698,6.9138058)"
108
-       y2="7.4030485"
109
-       x2="14.850094"
110
-       y1="7.4030485"
111
-       x1="10.176364"
112
-       gradientUnits="userSpaceOnUse"
113
-       id="linearGradient4676-8"
114
-       xlink:href="#linearGradient4713-2"
115
-       inkscape:collect="always" />
116
-    <linearGradient
117
        id="linearGradient4713-2">
118
       <stop
119
          id="stop4715-9"
120
@@ -164,40 +70,11 @@
121
          style="stop-color:#000000;stop-opacity:1;" />
122
     </linearGradient>
123
     <linearGradient
124
-       gradientTransform="translate(-9.1593698,6.9138058)"
125
-       y2="7.4030485"
126
-       x2="14.850094"
127
-       y1="7.4030485"
128
-       x1="10.176364"
129
-       gradientUnits="userSpaceOnUse"
130
-       id="linearGradient4757"
131
-       xlink:href="#linearGradient4713-2"
132
-       inkscape:collect="always" />
133
-    <linearGradient
134
-       id="linearGradient4759">
135
-      <stop
136
-         id="stop4761"
137
-         offset="0"
138
-         style="stop-color:#000000;stop-opacity:0;" />
139
-      <stop
140
-         style="stop-color:#000000;stop-opacity:0;"
141
-         offset="0.46642813"
142
-         id="stop4763" />
143
-      <stop
144
-         id="stop4765"
145
-         offset="0.47303236"
146
-         style="stop-color:#000000;stop-opacity:1;" />
147
-      <stop
148
-         id="stop4767"
149
-         offset="1"
150
-         style="stop-color:#000000;stop-opacity:1;" />
151
-    </linearGradient>
152
-    <linearGradient
153
        y2="7.4030485"
154
        x2="14.850094"
155
        y1="7.4030485"
156
        x1="10.176364"
157
-       gradientTransform="translate(-7.0215298,3.6524912)"
158
+       gradientTransform="translate(-7.0215298,2.8075088)"
159
        gradientUnits="userSpaceOnUse"
160
        id="linearGradient4771"
161
        xlink:href="#linearGradient4713-2"
162
@@ -208,19 +85,19 @@
163
      pagecolor="#ffffff"
164
      bordercolor="#666666"
165
      borderopacity="1.0"
166
-     inkscape:pageopacity="0.0"
167
+     inkscape:pageopacity="0"
168
      inkscape:pageshadow="2"
169
-     inkscape:zoom="31.999999"
170
-     inkscape:cx="8.3167614"
171
-     inkscape:cy="6.1548109"
172
+     inkscape:zoom="7.9999998"
173
+     inkscape:cx="22.787657"
174
+     inkscape:cy="22.468716"
175
      inkscape:document-units="px"
176
-     inkscape:current-layer="layer8"
177
+     inkscape:current-layer="layer3"
178
      showgrid="false"
179
-     inkscape:window-width="1920"
180
-     inkscape:window-height="1004"
181
-     inkscape:window-x="-9"
182
-     inkscape:window-y="-9"
183
-     inkscape:window-maximized="1"
184
+     inkscape:window-width="2410"
185
+     inkscape:window-height="1233"
186
+     inkscape:window-x="90"
187
+     inkscape:window-y="28"
188
+     inkscape:window-maximized="0"
189
      inkscape:snap-grids="true" />
190
   <metadata
191
      id="metadata7">
192
@@ -230,7 +107,7 @@
193
         <dc:format>image/svg+xml</dc:format>
194
         <dc:type
195
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
196
-        <dc:title />
197
+        <dc:title></dc:title>
198
       </cc:Work>
199
     </rdf:RDF>
200
   </metadata>
201
@@ -239,244 +116,146 @@
202
      inkscape:groupmode="layer"
203
      id="layer1"
204
      transform="translate(0,-1036.3622)"
205
+     style="display:inline"
206
      sodipodi:insensitive="true">
207
-    <rect
208
-       style="fill:#c8c8c8;fill-opacity:1;stroke:#000000;stroke-width:0.99977112;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
209
-       id="rect2985"
210
-       width="15.000229"
211
-       height="15.000229"
212
-       x="0.49988556"
213
-       y="1036.8622" />
214
+    <path
215
+       d="m 14,1038.3622 -12,0 c -0.7333333,0 -1.3333333,0.6 -1.3333333,1.3333 l 0,9.3334 c 0,0.7333 0.6,1.32 1.3333333,1.32 l 12,0 c 0.733333,0 1.333333,-0.5867 1.333333,-1.32 l 0,-9.3334 c 0,-0.7333 -0.6,-1.3333 -1.333333,-1.3333 z m 0,10.6733 -12,0 0,-9.3533 12,0 z"
216
+       id="path4"
217
+       inkscape:connector-curvature="0"
218
+       sodipodi:nodetypes="sssssssssccccc" />
219
   </g>
220
   <g
221
      inkscape:groupmode="layer"
222
      id="layer2"
223
      inkscape:label="ParallelPairLR"
224
      style="display:none">
225
-    <g
226
-       id="g3839">
227
-      <rect
228
-         y="1039.3622"
229
-         x="1"
230
-         height="10"
231
-         width="7"
232
-         id="rect3774"
233
-         style="fill:#808080;fill-opacity:1;stroke:none"
234
-         transform="translate(0,-1036.3622)" />
235
-      <text
236
-         sodipodi:linespacing="125%"
237
-         id="text3776"
238
-         y="1047.2446"
239
-         x="1.6855963"
240
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
241
-         xml:space="preserve"
242
-         transform="translate(0,-1036.3622)"><tspan
243
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold"
244
-           y="1047.2446"
245
-           x="1.6855963"
246
-           id="tspan3778"
247
-           sodipodi:role="line">L</tspan></text>
248
-      <rect
249
-         y="1039.3622"
250
-         x="8"
251
-         height="10"
252
-         width="7"
253
-         id="rect3774-5"
254
-         style="fill:#fcfcfc;fill-opacity:1;stroke:none"
255
-         transform="translate(0,-1036.3622)" />
256
-      <text
257
-         sodipodi:linespacing="125%"
258
-         id="text3776-6"
259
-         y="1047.2446"
260
-         x="8.1759539"
261
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
262
-         xml:space="preserve"
263
-         transform="translate(0,-1036.3622)"><tspan
264
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold"
265
-           y="1047.2446"
266
-           x="8.1759539"
267
-           id="tspan3778-6"
268
-           sodipodi:role="line">R</tspan></text>
269
-      <rect
270
-         transform="translate(0,-1036.3622)"
271
-         style="fill:#808080;fill-opacity:1;stroke:none"
272
-         id="rect3827"
273
-         width="7"
274
-         height="10"
275
-         x="1"
276
-         y="1039.3622" />
277
-      <text
278
-         transform="translate(0,-1036.3622)"
279
-         xml:space="preserve"
280
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
281
+    <rect
282
+       style="fill:#808080;fill-opacity:1;stroke:none"
283
+       id="rect3774"
284
+       width="7"
285
+       height="10"
286
+       x="1"
287
+       y="2.9999826" />
288
+    <text
289
+       xml:space="preserve"
290
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none"
291
+       x="1.6855963"
292
+       y="10.882429"
293
+       id="text3776"
294
+       sodipodi:linespacing="125%"><tspan
295
+         sodipodi:role="line"
296
+         id="tspan3778"
297
          x="1.6855963"
298
-         y="1047.2446"
299
-         id="text3829"
300
-         sodipodi:linespacing="125%"><tspan
301
-           sodipodi:role="line"
302
-           id="tspan3831"
303
-           x="1.6855963"
304
-           y="1047.2446"
305
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
306
-      <rect
307
-         transform="translate(0,-1036.3622)"
308
-         style="fill:#fcfcfc;fill-opacity:1;stroke:none"
309
-         id="rect3833"
310
-         width="7"
311
-         height="10"
312
-         x="8"
313
-         y="1039.3622" />
314
-      <text
315
-         transform="translate(0,-1036.3622)"
316
-         xml:space="preserve"
317
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
318
-         x="8.1759539"
319
-         y="1047.2446"
320
-         id="text3835"
321
-         sodipodi:linespacing="125%"><tspan
322
-           sodipodi:role="line"
323
-           id="tspan3837"
324
-           x="8.1759539"
325
-           y="1047.2446"
326
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
327
-    </g>
328
+         y="10.882429"
329
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold'">L</tspan></text>
330
+    <text
331
+       xml:space="preserve"
332
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
333
+       x="7.9103289"
334
+       y="10.882429"
335
+       id="text3776-6"
336
+       sodipodi:linespacing="125%"><tspan
337
+         sodipodi:role="line"
338
+         id="tspan3778-6"
339
+         x="7.9103289"
340
+         y="10.882429"
341
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'">R</tspan></text>
342
+    <rect
343
+       y="2.9999826"
344
+       x="1"
345
+       height="10"
346
+       width="7"
347
+       id="rect3827"
348
+       style="fill:#000000;fill-opacity:1;stroke:none" />
349
+    <text
350
+       sodipodi:linespacing="125%"
351
+       id="text3829"
352
+       y="10.882429"
353
+       x="2.0605965"
354
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none"
355
+       xml:space="preserve"><tspan
356
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
357
+         y="10.882429"
358
+         x="2.0605965"
359
+         id="tspan3831"
360
+         sodipodi:role="line">L</tspan></text>
361
   </g>
362
   <g
363
      inkscape:groupmode="layer"
364
      id="layer3"
365
      inkscape:label="ParallelPairRL"
366
      style="display:none">
367
-    <g
368
-       id="g3927"
369
-       transform="translate(7,0)">
370
-      <rect
371
-         style="fill:#808080;fill-opacity:1;stroke:none"
372
-         id="rect3878"
373
-         width="7"
374
-         height="10"
375
-         x="1"
376
-         y="2.9999826" />
377
-      <text
378
-         xml:space="preserve"
379
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
380
-         x="1.6855963"
381
-         y="10.882429"
382
-         id="text3880"
383
-         sodipodi:linespacing="125%"><tspan
384
-           sodipodi:role="line"
385
-           id="tspan3882"
386
-           x="1.6855963"
387
-           y="10.882429"
388
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
389
-      <rect
390
-         y="2.9999826"
391
-         x="1"
392
-         height="10"
393
-         width="7"
394
-         id="rect3890"
395
-         style="fill:#808080;fill-opacity:1;stroke:none" />
396
-      <text
397
-         sodipodi:linespacing="125%"
398
-         id="text3892"
399
-         y="10.882429"
400
-         x="1.6855963"
401
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
402
-         xml:space="preserve"><tspan
403
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold"
404
-           y="10.882429"
405
-           x="1.6855963"
406
-           id="tspan3894"
407
-           sodipodi:role="line">L</tspan></text>
408
-    </g>
409
-    <g
410
-       id="g3935"
411
-       transform="translate(-7,0)">
412
-      <rect
413
-         style="fill:#fcfcfc;fill-opacity:1;stroke:none"
414
-         id="rect3884"
415
-         width="7"
416
-         height="10"
417
-         x="8"
418
-         y="2.9999826" />
419
-      <text
420
-         xml:space="preserve"
421
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
422
-         x="8.1759539"
423
+    <text
424
+       xml:space="preserve"
425
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
426
+       x="1.8009539"
427
+       y="10.882429"
428
+       id="text3776-6-4"
429
+       sodipodi:linespacing="125%"><tspan
430
+         sodipodi:role="line"
431
+         id="tspan3778-6-2"
432
+         x="1.8009539"
433
          y="10.882429"
434
-         id="text3886"
435
-         sodipodi:linespacing="125%"><tspan
436
-           sodipodi:role="line"
437
-           id="tspan3888"
438
-           x="8.1759539"
439
-           y="10.882429"
440
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
441
-      <rect
442
-         y="2.9999826"
443
-         x="8"
444
-         height="10"
445
-         width="7"
446
-         id="rect3896"
447
-         style="fill:#fcfcfc;fill-opacity:1;stroke:none" />
448
-      <text
449
-         sodipodi:linespacing="125%"
450
-         id="text3898"
451
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'">R</tspan></text>
452
+    <rect
453
+       y="2.9999831"
454
+       x="8"
455
+       height="10"
456
+       width="7"
457
+       id="rect3827-3"
458
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none" />
459
+    <text
460
+       sodipodi:linespacing="125%"
461
+       id="text3829-83"
462
+       y="10.882429"
463
+       x="8.6074715"
464
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none"
465
+       xml:space="preserve"><tspan
466
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
467
          y="10.882429"
468
-         x="8.1759539"
469
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
470
-         xml:space="preserve"><tspan
471
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold"
472
-           y="10.882429"
473
-           x="8.1759539"
474
-           id="tspan3900"
475
-           sodipodi:role="line">R</tspan></text>
476
-    </g>
477
+         x="8.6074715"
478
+         id="tspan3831-5"
479
+         sodipodi:role="line">L</tspan></text>
480
   </g>
481
   <g
482
      inkscape:groupmode="layer"
483
      id="layer4"
484
      inkscape:label="OverUnderLR"
485
      style="display:none">
486
-    <g
487
-       id="g4011">
488
-      <rect
489
-         style="fill:#808080;fill-opacity:1;stroke:none"
490
-         id="rect3827-3"
491
-         width="10"
492
-         height="7"
493
-         x="3"
494
-         y="1" />
495
-      <text
496
-         xml:space="preserve"
497
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
498
-         x="5.1951499"
499
-         y="7.3130155"
500
-         id="text3829-0"
501
-         sodipodi:linespacing="125%"><tspan
502
-           sodipodi:role="line"
503
-           id="tspan3831-8"
504
-           x="5.1951499"
505
-           y="7.3130155"
506
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
507
-      <rect
508
-         style="fill:#fcfcfc;fill-opacity:1;stroke:none"
509
-         id="rect3833-7"
510
-         width="10"
511
-         height="7"
512
-         x="3"
513
-         y="8" />
514
-      <text
515
-         xml:space="preserve"
516
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
517
-         x="5.1951499"
518
-         y="14.431433"
519
-         id="text3835-2"
520
-         sodipodi:linespacing="125%"><tspan
521
-           sodipodi:role="line"
522
-           id="tspan3837-9"
523
-           x="5.1951499"
524
-           y="14.431433"
525
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
526
-    </g>
527
+    <rect
528
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
529
+       id="rect4038-9"
530
+       width="13.046875"
531
+       height="5.078125"
532
+       x="1.4765624"
533
+       y="3.062501" />
534
+    <text
535
+       xml:space="preserve"
536
+       style="font-style:normal;font-weight:normal;font-size:8.81972408px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none"
537
+       x="4.9363327"
538
+       y="8.2299852"
539
+       id="text4040-0"
540
+       sodipodi:linespacing="125%"
541
+       transform="scale(1.1024655,0.90705786)"><tspan
542
+         sodipodi:role="line"
543
+         id="tspan4042-5"
544
+         x="4.9363327"
545
+         y="8.2299852"
546
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.51232767px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'">L</tspan></text>
547
+    <text
548
+       xml:space="preserve"
549
+       style="font-style:normal;font-weight:normal;font-size:8.81972408px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
550
+       x="4.9363327"
551
+       y="13.543103"
552
+       id="text4046-6"
553
+       sodipodi:linespacing="125%"
554
+       transform="scale(1.1024655,0.90705786)"><tspan
555
+         sodipodi:role="line"
556
+         id="tspan4048-6"
557
+         x="4.9363327"
558
+         y="13.543103"
559
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.51232767px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
560
+         dx="0">R</tspan></text>
561
   </g>
562
   <g
563
      inkscape:groupmode="layer"
564
@@ -484,251 +263,63 @@
565
      inkscape:label="OverUnderRL"
566
      style="display:none">
567
     <rect
568
-       style="fill:#808080;fill-opacity:1;stroke:none"
569
+       style="fill:#000000;fill-opacity:1;stroke:none"
570
        id="rect4038"
571
-       width="10"
572
-       height="7"
573
-       x="3"
574
+       width="13.046875"
575
+       height="5.078125"
576
+       x="1.4765624"
577
        y="8" />
578
     <text
579
        xml:space="preserve"
580
-       style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
581
-       x="5.1951499"
582
-       y="14.449447"
583
+       style="font-style:normal;font-weight:normal;font-size:8.81972408px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none"
584
+       x="4.9363327"
585
+       y="13.673408"
586
        id="text4040"
587
-       sodipodi:linespacing="125%"><tspan
588
+       sodipodi:linespacing="125%"
589
+       transform="scale(1.1024655,0.90705785)"><tspan
590
          sodipodi:role="line"
591
          id="tspan4042"
592
-         x="5.1951499"
593
-         y="14.449447"
594
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
595
-    <rect
596
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none"
597
-       id="rect4044"
598
-       width="10"
599
-       height="7"
600
-       x="3"
601
-       y="1" />
602
+         x="4.9363327"
603
+         y="13.673408"
604
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.51232767px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'">L</tspan></text>
605
     <text
606
        xml:space="preserve"
607
-       style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
608
-       x="5.1951499"
609
-       y="7.3468785"
610
+       style="font-style:normal;font-weight:normal;font-size:8.81972408px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
611
+       x="4.9363327"
612
+       y="8.2374878"
613
        id="text4046"
614
-       sodipodi:linespacing="125%"><tspan
615
+       sodipodi:linespacing="125%"
616
+       transform="scale(1.1024655,0.90705785)"><tspan
617
          sodipodi:role="line"
618
          id="tspan4048"
619
-         x="5.1951499"
620
-         y="7.3468785"
621
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
622
+         x="4.9363327"
623
+         y="8.2374878"
624
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.51232767px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'"
625
+         dx="0">R</tspan></text>
626
   </g>
627
   <g
628
      style="display:none"
629
      inkscape:label="RowInterlacedLR"
630
      id="g4213"
631
      inkscape:groupmode="layer">
632
-    <rect
633
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
634
-       id="rect4229-19"
635
-       width="14"
636
-       height="2"
637
-       x="33.570251"
638
-       y="17.143837" />
639
-    <rect
640
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
641
-       id="rect4235-8"
642
-       width="14"
643
-       height="2"
644
-       x="33.570251"
645
-       y="15.143854" />
646
-    <rect
647
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
648
-       id="rect4229-1-3"
649
-       width="14"
650
-       height="2"
651
-       x="33.570251"
652
-       y="13.143853" />
653
-    <rect
654
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
655
-       id="rect4235-0-0"
656
-       width="14"
657
-       height="2"
658
-       x="33.570251"
659
-       y="11.143853" />
660
-    <rect
661
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
662
-       id="rect4229-1-0-2"
663
-       width="14"
664
-       height="2"
665
-       x="33.570251"
666
-       y="9.1438532" />
667
-    <text
668
-       sodipodi:linespacing="125%"
669
-       id="text4225"
670
-       y="13.8001"
671
-       x="4.3218513"
672
-       style="font-size:14.12289143px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
673
-       xml:space="preserve"><tspan
674
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold"
675
-         y="13.8001"
676
-         x="4.3218513"
677
-         id="tspan4227"
678
-         sodipodi:role="line">R</tspan></text>
679
-    <text
680
-       sodipodi:linespacing="125%"
681
-       id="text4219"
682
-       y="11.976875"
683
-       x="0.50540578"
684
-       style="font-size:13.88040066px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
685
-       xml:space="preserve"><tspan
686
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold"
687
-         y="11.976875"
688
-         x="0.50540578"
689
-         id="tspan4221"
690
-         sodipodi:role="line">L</tspan></text>
691
-    <rect
692
-       style="fill:#c8c8c8;fill-opacity:1;stroke:none"
693
-       id="rect4235"
694
-       width="4.0121169"
695
-       height="2"
696
-       x="1"
697
-       y="7.9393387" />
698
-    <rect
699
-       style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline"
700
-       id="rect4235-0"
701
-       width="3.9679224"
702
-       height="2"
703
-       x="1"
704
-       y="3.9393387" />
705
-    <g
706
-       id="g4337"
707
-       transform="matrix(0.99775258,0,0,1,0.03371084,-0.9999828)">
708
-      <rect
709
-         y="10.999983"
710
-         x="9.1759224"
711
-         height="2"
712
-         width="5.8240776"
713
-         id="rect4229"
714
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none" />
715
-      <rect
716
-         y="7"
717
-         x="4.9774756"
718
-         height="2"
719
-         width="10.022524"
720
-         id="rect4229-1"
721
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline" />
722
-      <rect
723
-         y="3"
724
-         x="5.0658641"
725
-         height="2"
726
-         width="9.9341364"
727
-         id="rect4229-1-0"
728
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline" />
729
-    </g>
730
+    <path
731
+       style="fill:#000000;fill-opacity:1"
732
+       d="m 1.5129445,2.8429648 0,9.9687502 0.0625,0 0,0.15625 13.0937435,0 0,-0.15625 0.15625,0 0,-9.9687502 z m 5.4886262,0.5664062 4.8144463,0 c 0.58758,0.095058 1.068622,0.257645 1.412109,0.5058594 0.338062,0.242522 0.56092,0.5815198 0.695313,0.9941406 0.05602,0.2747396 0.07677,0.5494792 0.07031,0.8242188 l -2.34375,0 C 11.598383,5.5476543 11.521967,5.3869146 11.396095,5.2824179 11.184507,5.1033818 10.833758,5.0148398 10.341408,5.0148398 l -0.9902283,0 0,0.71875 -2.349609,0 z m -5.0445394,2.34375 1.892578,0 0,2.3242188 -1.892578,0 z m 5.0445394,2.3437498 5.4921813,0 c -0.05729,0.02309 -0.113326,0.04689 -0.175782,0.06641 0.321452,0.07324 0.60905,0.241538 0.861328,0.501954 0.235628,0.235627 0.473792,0.598024 0.712891,1.0605462 0.07315,0.2175237 0.115522,0.446589 0.105469,0.695313 l -2.251953,0 -0.128907,-0.261719 c -0.223795,-0.455729 -0.45166,-0.7667652 -0.683593,-0.9335942 -0.227865,-0.166828 -0.533529,-0.25 -0.916016,-0.25 l -0.6660093,0 0,1.4453132 -2.349609,0 z m -5.0445394,2.3437502 1.892578,0 0,0.421875 3.246094,0 0,1.5625 -5.138672,0 z"
733
+       id="path4333"
734
+       inkscape:connector-curvature="0"
735
+       sodipodi:nodetypes="ccccccccccccccccsccccccccccccccccccsccccccccccc" />
736
   </g>
737
   <g
738
      inkscape:groupmode="layer"
739
      id="g4342"
740
      inkscape:label="RowInterlacedRL"
741
      style="display:none">
742
-    <rect
743
-       y="17.143837"
744
-       x="33.570251"
745
-       height="2"
746
-       width="14"
747
-       id="rect4344"
748
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
749
-    <rect
750
-       y="15.143854"
751
-       x="33.570251"
752
-       height="2"
753
-       width="14"
754
-       id="rect4346"
755
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
756
-    <rect
757
-       y="13.143853"
758
-       x="33.570251"
759
-       height="2"
760
-       width="14"
761
-       id="rect4348"
762
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
763
-    <rect
764
-       y="11.143853"
765
-       x="33.570251"
766
-       height="2"
767
-       width="14"
768
-       id="rect4350"
769
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
770
-    <rect
771
-       y="9.1438532"
772
-       x="33.570251"
773
-       height="2"
774
-       width="14"
775
-       id="rect4352"
776
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
777
-    <text
778
-       xml:space="preserve"
779
-       style="font-size:14.12289143px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
780
-       x="4.3218513"
781
-       y="11.8001"
782
-       id="text4354"
783
-       sodipodi:linespacing="125%"><tspan
784
-         sodipodi:role="line"
785
-         id="tspan4356"
786
-         x="4.3218513"
787
-         y="11.8001"
788
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
789
-    <text
790
-       xml:space="preserve"
791
-       style="font-size:13.88040066px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
792
-       x="0.50540578"
793
-       y="13.976875"
794
-       id="text4358"
795
-       sodipodi:linespacing="125%"><tspan
796
-         sodipodi:role="line"
797
-         id="tspan4360"
798
-         x="0.50540578"
799
-         y="13.976875"
800
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
801
-    <rect
802
-       y="9.9393387"
803
-       x="1"
804
-       height="2"
805
-       width="4.0121169"
806
-       id="rect4362"
807
-       style="fill:#c8c8c8;fill-opacity:1;stroke:none" />
808
-    <rect
809
-       y="5.9393387"
810
-       x="1"
811
-       height="2"
812
-       width="3.9679224"
813
-       id="rect4364"
814
-       style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline" />
815
-    <g
816
-       transform="matrix(0.99775258,0,0,1,0.03371084,1.0000172)"
817
-       id="g4366">
818
-      <rect
819
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none"
820
-         id="rect4368"
821
-         width="5.8240776"
822
-         height="2"
823
-         x="9.1759224"
824
-         y="10.999983" />
825
-      <rect
826
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline"
827
-         id="rect4370"
828
-         width="10.022524"
829
-         height="2"
830
-         x="4.9774756"
831
-         y="7" />
832
-      <rect
833
-         style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline"
834
-         id="rect4372"
835
-         width="9.9341364"
836
-         height="2"
837
-         x="5.0658641"
838
-         y="3" />
839
-    </g>
840
+    <path
841
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
842
+       d="m 1.3125,2.7500001 0,10.4374999 13.125,0 0,-10.4374999 z m 0.679688,0.7617187 2.349609,0 0,2.2265624 -2.349609,0 z m 3.796874,2.2265624 2.34961,0 0,1.7089844 0.990234,0 c 0.492351,0 0.843099,-0.090332 1.054688,-0.2734375 0.215657,-0.1831054 0.324219,-0.4851888 0.324218,-0.9042969 2e-6,-0.2067769 -0.0285,-0.3830521 -0.08203,-0.53125 l 2.416016,0 c 0.0032,0.062925 0.01563,0.1180152 0.01563,0.1835938 0,0.6022135 -0.146484,1.0958659 -0.439453,1.4824219 -0.205156,0.2745037 -0.488733,0.4957755 -0.84375,0.6679691 l -5.785157,0 z m -3.796874,2.3535158 2.349609,0 0,2.333984 -2.349609,0 z m 3.796874,2.333984 2.34961,0 0,2.09375 -2.34961,0 z m 4.699219,0 2.498047,0 1.03125,2.09375 -2.503906,0 z"
843
+       id="text4360"
844
+       inkscape:connector-curvature="0"
845
+       sodipodi:nodetypes="cccccccccccccsccccsccccccccccccccccccc" />
846
   </g>
847
   <g
848
      style="display:none"
849
@@ -736,64 +327,36 @@
850
      id="g4374"
851
      inkscape:groupmode="layer">
852
     <rect
853
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
854
-       id="rect4376"
855
-       width="14"
856
-       height="2"
857
-       x="33.570251"
858
-       y="17.143837" />
859
-    <rect
860
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
861
-       id="rect4378"
862
-       width="14"
863
-       height="2"
864
-       x="33.570251"
865
-       y="15.143854" />
866
-    <rect
867
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
868
-       id="rect4380"
869
-       width="14"
870
-       height="2"
871
-       x="33.570251"
872
-       y="13.143853" />
873
-    <rect
874
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
875
-       id="rect4382"
876
-       width="14"
877
-       height="2"
878
-       x="33.570251"
879
-       y="11.143853" />
880
-    <rect
881
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
882
-       id="rect4384"
883
-       width="14"
884
-       height="2"
885
-       x="33.570251"
886
-       y="9.1438532" />
887
+       style="fill:#c8c8c8;fill-opacity:1;stroke:none"
888
+       id="rect4451"
889
+       width="11.993893"
890
+       height="9.347373"
891
+       x="1.9983507"
892
+       y="3.3179572" />
893
     <text
894
        sodipodi:linespacing="125%"
895
        id="text4386"
896
-       y="11.8001"
897
-       x="4.3218513"
898
-       style="font-size:14.12289143px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;font-family:Sans"
899
-       xml:space="preserve"><tspan
900
-         style="font-weight:bold;fill:#ff0000;fill-opacity:1;-inkscape-font-specification:Sans Bold"
901
-         y="11.8001"
902
-         x="4.3218513"
903
+       y="12.50611"
904
+       x="4.6938848"
905
+       style="font-style:normal;font-weight:normal;font-size:14.3184557px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none"
906
+       xml:space="preserve"
907
+       transform="scale(0.98634179,1.0138473)"><tspan
908
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.67309189px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';fill:#ff0000;fill-opacity:1"
909
+         y="12.50611"
910
+         x="4.6938848"
911
          id="tspan4388"
912
          sodipodi:role="line">R</tspan></text>
913
-    <text
914
-       sodipodi:linespacing="125%"
915
-       id="text4390"
916
-       y="13.976875"
917
-       x="0.50540578"
918
-       style="font-size:13.88040066px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00fcfc;fill-opacity:1;stroke:none;font-family:Sans"
919
-       xml:space="preserve"><tspan
920
-         style="font-weight:bold;fill:#00fcfc;fill-opacity:1;-inkscape-font-specification:Sans Bold"
921
-         y="13.976875"
922
-         x="0.50540578"
923
-         id="tspan4392"
924
-         sodipodi:role="line">L</tspan></text>
925
+    <g
926
+       transform="scale(0.9763953,1.0241754)"
927
+       style="font-style:normal;font-weight:normal;font-size:14.21596432px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#00fcfc;fill-opacity:1;stroke:none"
928
+       id="text4390">
929
+      <path
930
+         d="m 2.0462289,12.376119 0,-9.1390649 1.9378318,0 0,7.5387909 4.3439775,0 0,1.600274 z"
931
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.80219173px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#00fcfc;fill-opacity:1"
932
+         id="path4449"
933
+         inkscape:connector-curvature="0"
934
+         sodipodi:nodetypes="ccccccc" />
935
+    </g>
936
   </g>
937
   <g
938
      inkscape:groupmode="layer"
939
@@ -801,64 +364,36 @@
940
      inkscape:label="AnaglyphYellowBlue"
941
      style="display:none">
942
     <rect
943
-       y="17.143837"
944
-       x="33.570251"
945
-       height="2"
946
-       width="14"
947
-       id="rect4408"
948
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
949
-    <rect
950
-       y="15.143854"
951
-       x="33.570251"
952
-       height="2"
953
-       width="14"
954
-       id="rect4410"
955
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
956
-    <rect
957
-       y="13.143853"
958
-       x="33.570251"
959
-       height="2"
960
-       width="14"
961
-       id="rect4412"
962
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
963
-    <rect
964
-       y="11.143853"
965
-       x="33.570251"
966
-       height="2"
967
-       width="14"
968
-       id="rect4414"
969
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
970
-    <rect
971
-       y="9.1438532"
972
-       x="33.570251"
973
-       height="2"
974
-       width="14"
975
-       id="rect4416"
976
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
977
-    <text
978
-       xml:space="preserve"
979
-       style="font-size:14.12289143px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffff00;fill-opacity:1;stroke:none;font-family:Sans"
980
-       x="4.3218513"
981
-       y="11.8001"
982
-       id="text4418"
983
-       sodipodi:linespacing="125%"><tspan
984
-         sodipodi:role="line"
985
-         id="tspan4420"
986
-         x="4.3218513"
987
-         y="11.8001"
988
-         style="font-weight:bold;fill:#ffff00;fill-opacity:1;-inkscape-font-specification:Sans Bold">R</tspan></text>
989
+       style="display:inline;fill:#c8c8c8;fill-opacity:1;stroke:none"
990
+       id="rect4451-6-9"
991
+       width="11.993893"
992
+       height="9.347373"
993
+       x="1.9983507"
994
+       y="3.3179576" />
995
     <text
996
+       sodipodi:linespacing="125%"
997
+       id="text4386-5-6"
998
+       y="12.50611"
999
+       x="4.6938848"
1000
+       style="font-style:normal;font-weight:normal;font-size:14.3184557px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ffff00;fill-opacity:1;stroke:none"
1001
        xml:space="preserve"
1002
-       style="font-size:13.88040066px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
1003
-       x="0.50540578"
1004
-       y="13.976875"
1005
-       id="text4422"
1006
-       sodipodi:linespacing="125%"><tspan
1007
-         sodipodi:role="line"
1008
-         id="tspan4424"
1009
-         x="0.50540578"
1010
-         y="13.976875"
1011
-         style="font-weight:bold;fill:#0000ff;fill-opacity:1;-inkscape-font-specification:Sans Bold">L</tspan></text>
1012
+       transform="scale(0.98634182,1.0138473)"><tspan
1013
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.67309189px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';fill:#ffff00;fill-opacity:1"
1014
+         y="12.50611"
1015
+         x="4.6938848"
1016
+         id="tspan4388-9-9"
1017
+         sodipodi:role="line">R</tspan></text>
1018
+    <g
1019
+       transform="scale(0.9763953,1.0241754)"
1020
+       style="font-style:normal;font-weight:normal;font-size:14.21596432px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#0000ff;fill-opacity:1;stroke:none"
1021
+       id="text4390-6-7">
1022
+      <path
1023
+         d="m 2.0462289,12.376119 0,-9.1390649 1.9378318,0 0,7.5387909 4.3439775,0 0,1.600274 z"
1024
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.80219173px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#0000ff;fill-opacity:1"
1025
+         id="path4449-8-1"
1026
+         inkscape:connector-curvature="0"
1027
+         sodipodi:nodetypes="ccccccc" />
1028
+    </g>
1029
   </g>
1030
   <g
1031
      style="display:none"
1032
@@ -866,64 +401,36 @@
1033
      id="g4426"
1034
      inkscape:groupmode="layer">
1035
     <rect
1036
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
1037
-       id="rect4428"
1038
-       width="14"
1039
-       height="2"
1040
-       x="33.570251"
1041
-       y="17.143837" />
1042
-    <rect
1043
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
1044
-       id="rect4430"
1045
-       width="14"
1046
-       height="2"
1047
-       x="33.570251"
1048
-       y="15.143854" />
1049
-    <rect
1050
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
1051
-       id="rect4432"
1052
-       width="14"
1053
-       height="2"
1054
-       x="33.570251"
1055
-       y="13.143853" />
1056
-    <rect
1057
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
1058
-       id="rect4434"
1059
-       width="14"
1060
-       height="2"
1061
-       x="33.570251"
1062
-       y="11.143853" />
1063
-    <rect
1064
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
1065
-       id="rect4436"
1066
-       width="14"
1067
-       height="2"
1068
-       x="33.570251"
1069
-       y="9.1438532" />
1070
+       style="display:inline;fill:#c8c8c8;fill-opacity:1;stroke:none"
1071
+       id="rect4451-6"
1072
+       width="11.993893"
1073
+       height="9.347373"
1074
+       x="1.9983507"
1075
+       y="3.3179574" />
1076
     <text
1077
        sodipodi:linespacing="125%"
1078
-       id="text4438"
1079
-       y="11.8001"
1080
-       x="4.3218513"
1081
-       style="font-size:14.12289143px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00ff00;fill-opacity:1;stroke:none;font-family:Sans"
1082
-       xml:space="preserve"><tspan
1083
-         style="font-weight:bold;fill:#00ff00;fill-opacity:1;-inkscape-font-specification:Sans Bold"
1084
-         y="11.8001"
1085
-         x="4.3218513"
1086
-         id="tspan4440"
1087
+       id="text4386-5"
1088
+       y="12.50611"
1089
+       x="4.6938848"
1090
+       style="font-style:normal;font-weight:normal;font-size:14.3184557px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#00ff00;fill-opacity:1;stroke:none"
1091
+       xml:space="preserve"
1092
+       transform="scale(0.98634182,1.0138473)"><tspan
1093
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.67309189px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold';fill:#00ff00;fill-opacity:1"
1094
+         y="12.50611"
1095
+         x="4.6938848"
1096
+         id="tspan4388-9"
1097
          sodipodi:role="line">R</tspan></text>
1098
-    <text
1099
-       sodipodi:linespacing="125%"
1100
-       id="text4442"
1101
-       y="13.976875"
1102
-       x="0.50540578"
1103
-       style="font-size:13.88040066px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ff00ff;fill-opacity:1;stroke:none;font-family:Sans"
1104
-       xml:space="preserve"><tspan
1105
-         style="font-weight:bold;fill:#ff00ff;fill-opacity:1;-inkscape-font-specification:Sans Bold"
1106
-         y="13.976875"
1107
-         x="0.50540578"
1108
-         id="tspan4444"
1109
-         sodipodi:role="line">L</tspan></text>
1110
+    <g
1111
+       transform="scale(0.9763953,1.0241754)"
1112
+       style="font-style:normal;font-weight:normal;font-size:14.21596432px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#ff00ff;fill-opacity:1;stroke:none"
1113
+       id="text4390-6">
1114
+      <path
1115
+         d="m 2.0462289,12.376119 0,-9.1390649 1.9378318,0 0,7.5387909 4.3439775,0 0,1.600274 z"
1116
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.80219173px;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans Bold';fill:#ff00ff;fill-opacity:1"
1117
+         id="path4449-8"
1118
+         inkscape:connector-curvature="0"
1119
+         sodipodi:nodetypes="ccccccc" />
1120
+    </g>
1121
   </g>
1122
   <g
1123
      style="display:none"
1124
@@ -931,181 +438,145 @@
1125
      id="g4446"
1126
      inkscape:groupmode="layer">
1127
     <rect
1128
-       y="2"
1129
-       x="2"
1130
-       height="8"
1131
+       y="3.3197443"
1132
+       x="1.9974341"
1133
+       height="7"
1134
        width="8"
1135
        id="rect4448"
1136
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
1137
+       style="display:inline;fill:#c8c8c8;fill-opacity:1;stroke:none" />
1138
     <rect
1139
-       y="3"
1140
-       x="3"
1141
-       height="8"
1142
+       y="4.3200002"
1143
+       x="2.9974341"
1144
+       height="7"
1145
        width="8"
1146
        id="rect4448-2"
1147
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
1148
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none" />
1149
     <rect
1150
-       y="4"
1151
-       x="4"
1152
-       height="8"
1153
+       y="5.3200002"
1154
+       x="3.9974341"
1155
+       height="7"
1156
        width="8"
1157
        id="rect4448-0"
1158
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
1159
+       style="display:inline;fill:#c8c8c8;fill-opacity:1;stroke:none" />
1160
     <rect
1161
-       y="5"
1162
-       x="5"
1163
-       height="8"
1164
-       width="8"
1165
+       y="6.3200002"
1166
+       x="4.975337"
1167
+       height="7"
1168
+       width="8.0055246"
1169
        id="rect4448-2-9"
1170
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
1171
-    <rect
1172
-       y="6"
1173
-       x="6"
1174
-       height="8"
1175
-       width="8"
1176
-       id="rect4448-0-5"
1177
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
1178
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none" />
1179
     <text
1180
        xml:space="preserve"
1181
-       style="font-size:6px;font-style:italic;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f2f2f2;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Italic"
1182
-       x="8.3085041"
1183
-       y="12.155107"
1184
+       style="font-style:italic;font-weight:normal;font-size:6px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Italic';letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
1185
+       x="6.9917712"
1186
+       y="11.926445"
1187
        id="text4537"
1188
        sodipodi:linespacing="125%"><tspan
1189
          sodipodi:role="line"
1190
          id="tspan4539"
1191
-         x="8.3085041"
1192
-         y="12.155107"
1193
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold Italic">t</tspan></text>
1194
+         x="6.9917712"
1195
+         y="11.926445"
1196
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold Italic';fill:#ffffff;fill-opacity:1">t</tspan></text>
1197
   </g>
1198
   <g
1199
      inkscape:groupmode="layer"
1200
      id="layer8"
1201
-     inkscape:label="DualStream">
1202
+     inkscape:label="DualStream"
1203
+     style="display:none">
1204
     <rect
1205
-       y="2"
1206
-       x="2"
1207
-       height="8"
1208
+       y="2.953125"
1209
+       x="1.9558058"
1210
+       height="7.484375"
1211
        width="8"
1212
        id="rect4448-1"
1213
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline" />
1214
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none" />
1215
     <text
1216
        xml:space="preserve"
1217
-       style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1218
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none"
1219
        x="3.3710938"
1220
-       y="8.8398438"
1221
+       y="9.2773438"
1222
        id="text3829-8"
1223
        sodipodi:linespacing="125%"><tspan
1224
          sodipodi:role="line"
1225
          id="tspan3831-2"
1226
          x="3.3710938"
1227
-         y="8.8398438"
1228
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
1229
+         y="9.2773438"
1230
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold'">L</tspan></text>
1231
     <rect
1232
-       y="6"
1233
-       x="6"
1234
-       height="8"
1235
-       width="8"
1236
+       y="5.59375"
1237
+       x="6.390625"
1238
+       height="6.6741753"
1239
+       width="7.15625"
1240
        id="rect4448-2-9-0"
1241
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline" />
1242
+       style="display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none" />
1243
     <text
1244
        xml:space="preserve"
1245
-       style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1246
-       x="6.8398438"
1247
-       y="12.863281"
1248
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
1249
+       x="6.852788"
1250
+       y="12.146106"
1251
        id="text3835-4"
1252
        sodipodi:linespacing="125%"><tspan
1253
          sodipodi:role="line"
1254
          id="tspan3837-5"
1255
-         x="6.8398438"
1256
-         y="12.863281"
1257
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">R</tspan></text>
1258
+         x="6.852788"
1259
+         y="12.146106"
1260
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold'">R</tspan></text>
1261
   </g>
1262
   <g
1263
      inkscape:groupmode="layer"
1264
      id="g4541"
1265
      inkscape:label="Tiled720in1080"
1266
      style="display:none">
1267
-    <rect
1268
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
1269
-       id="rect4545"
1270
-       width="4"
1271
-       height="7"
1272
-       x="9.9384851"
1273
-       y="2.9835343" />
1274
-    <text
1275
-       xml:space="preserve"
1276
-       style="font-size:7.10074091px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4640);fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1277
-       x="9.524538"
1278
-       y="9.9912825"
1279
+    <path
1280
+       style="font-style:normal;font-weight:normal;font-size:7.10074091px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none"
1281
+       d="m 11.464844,4.075865 0,4.5957031 1.503906,0 0,-1.7402344 0.425781,0 c 0.244792,0 0.440104,0.042837 0.585938,0.1269532 0.122473,0.069403 0.2424,0.2005748 0.361328,0.3691406 l 0,-1.5292969 c -0.02265,0.024202 -0.03589,0.057066 -0.06445,0.076172 -0.135417,0.092323 -0.360677,0.1386719 -0.675782,0.1386719 l -0.632812,0 0,-1.1777344 0.632812,0 c 0.315105,0 0.540365,0.044494 0.675782,0.1347656 0.02849,0.018632 0.04185,0.050517 0.06445,0.074219 l 0,-1.0234375 C 14.15328,4.1036309 13.98499,4.075865 13.761719,4.075865 l -2.296875,0 z"
1282
        id="text4046-0"
1283
-       sodipodi:linespacing="125%"
1284
-       transform="scale(1.126643,0.88759259)"><tspan
1285
-         sodipodi:role="line"
1286
-         id="tspan4048-7"
1287
-         x="9.524538"
1288
-         y="9.9912825"
1289
-         style="font-weight:bold;fill:url(#linearGradient4640);fill-opacity:1;-inkscape-font-specification:Sans Bold">R</tspan></text>
1290
-    <rect
1291
-       style="fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline"
1292
-       id="rect4545-2"
1293
-       width="8"
1294
-       height="3"
1295
-       x="2"
1296
-       y="10" />
1297
-    <text
1298
-       xml:space="preserve"
1299
-       style="font-size:7.10074091px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4676);fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1300
-       x="-1.0765914"
1301
-       y="16.905088"
1302
+       inkscape:connector-curvature="0" />
1303
+    <path
1304
+       style="font-style:normal;font-weight:normal;font-size:7.10074091px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:url(#linearGradient4676);fill-opacity:1;stroke:none"
1305
+       d="m -0.49023438,10.222656 0,2.771485 4.02734378,0 c -0.024473,-0.02223 -0.049804,-0.05303 -0.074219,-0.07227 -0.1614583,-0.131303 -0.3450521,-0.215024 -0.5507812,-0.251953 0.375,-0.09232 0.6549479,-0.236737 0.8398437,-0.431641 0.1875,-0.194903 0.28125,-0.444407 0.28125,-0.748047 0,-0.439046 -0.1796875,-0.75978 -0.5390625,-0.96289 -0.3567708,-0.20311 -0.9192708,-0.304688 -1.6875,-0.304688 l -2.29687498,0 z m 1.50390628,0.859375 0.6328125,0 c 0.3151041,0 0.5403646,0.04449 0.6757812,0.134766 0.1380209,0.09027 0.2070313,0.239954 0.2070313,0.449219 0,0.211316 -0.06901,0.362755 -0.2070313,0.455078 -0.1354166,0.09232 -0.3606771,0.138672 -0.6757812,0.138672 l -0.6328125,0 0,-1.177735 z"
1306
        id="text4046-0-6"
1307
-       sodipodi:linespacing="125%"
1308
-       transform="scale(1.126643,0.8875926)"><tspan
1309
-         sodipodi:role="line"
1310
-         id="tspan4048-7-4"
1311
-         x="-1.0765914"
1312
-         y="16.905088"
1313
-         style="font-weight:bold;fill:url(#linearGradient4676);fill-opacity:1;-inkscape-font-specification:Sans Bold">R</tspan></text>
1314
-    <rect
1315
-       style="fill:#c8c8c8;fill-opacity:1;stroke:none;display:inline"
1316
-       id="rect4545-2-6"
1317
-       width="10"
1318
-       height="2"
1319
-       x="1"
1320
-       y="13" />
1321
+       inkscape:connector-curvature="0" />
1322
     <text
1323
        xml:space="preserve"
1324
-       style="font-size:7.10074091px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:url(#linearGradient4771);fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1325
+       style="font-style:normal;font-weight:normal;font-size:7.10074091px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:url(#linearGradient4771);fill-opacity:1;stroke:none"
1326
        x="2.5030084"
1327
-       y="13.643773"
1328
+       y="12.798787"
1329
        id="text4046-0-6-0"
1330
        sodipodi:linespacing="125%"
1331
        transform="scale(1.126643,0.8875926)"><tspan
1332
          sodipodi:role="line"
1333
          id="tspan4048-7-4-2"
1334
          x="2.5030084"
1335
-         y="13.643773"
1336
-         style="font-weight:bold;fill:url(#linearGradient4771);fill-opacity:1;-inkscape-font-specification:Sans Bold">R</tspan></text>
1337
+         y="12.798787"
1338
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:url(#linearGradient4771);fill-opacity:1">R</tspan></text>
1339
     <rect
1340
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
1341
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
1342
        id="rect4543"
1343
        width="8"
1344
        height="7"
1345
-       x="2"
1346
-       y="3" />
1347
+       x="1.9779029"
1348
+       y="2.25" />
1349
     <text
1350
        xml:space="preserve"
1351
-       style="font-size:7.10074091px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1352
+       style="font-style:normal;font-weight:normal;font-size:7.10074091px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none"
1353
        x="2.8952723"
1354
-       y="9.9912825"
1355
+       y="9.7686882"
1356
        id="text4040-6"
1357
        sodipodi:linespacing="125%"
1358
-       transform="scale(1.126643,0.88759259)"><tspan
1359
+       transform="scale(1.126643,0.8875926)"><tspan
1360
          sodipodi:role="line"
1361
          id="tspan4042-9"
1362
          x="2.8952723"
1363
-         y="9.9912825"
1364
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">L</tspan></text>
1365
+         y="9.7686882"
1366
+         style="font-weight:bold;-inkscape-font-specification:'Sans Bold'">L</tspan></text>
1367
+    <rect
1368
+       style="fill:#000000;fill-opacity:1;stroke:none"
1369
+       id="rect4438"
1370
+       width="4.0234375"
1371
+       height="3.4296875"
1372
+       x="9.984374"
1373
+       y="9.2460938" />
1374
   </g>
1375
   <g
1376
      inkscape:groupmode="layer"
1377
@@ -1113,15 +584,15 @@
1378
      inkscape:label="Mono"
1379
      style="display:none">
1380
     <rect
1381
-       style="fill:#808080;fill-opacity:1;stroke:none;display:inline"
1382
+       style="display:inline;fill:#000000;fill-opacity:1;stroke:none"
1383
        id="rect4038-2"
1384
-       width="12"
1385
-       height="10"
1386
-       x="2"
1387
-       y="3" />
1388
+       width="12.546875"
1389
+       height="10.328125"
1390
+       x="1.78125"
1391
+       y="2.90625" />
1392
     <text
1393
        xml:space="preserve"
1394
-       style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;display:inline;font-family:Sans"
1395
+       style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;display:inline;fill:#fcfcfc;fill-opacity:1;stroke:none"
1396
        x="4.029417"
1397
        y="10.972326"
1398
        id="text4040-8"
1399
@@ -1130,24 +601,25 @@
1400
          id="tspan4042-0"
1401
          x="4.029417"
1402
          y="10.972326"
1403
-         style="font-weight:bold;-inkscape-font-specification:Sans Bold">M</tspan></text>
1404
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans Bold'">M</tspan></text>
1405
   </g>
1406
   <g
1407
      inkscape:groupmode="layer"
1408
      id="layer6"
1409
      inkscape:label="Auto"
1410
-     style="display:none">
1411
+     style="display:inline">
1412
     <g
1413
        id="g4207"
1414
-       transform="matrix(1.3040276,0,0,1.3040276,-3.4954074,-2.6287988)">
1415
+       transform="matrix(1.3040276,0,0,1.3040276,-3.4954074,-2.3787988)"
1416
+       style="fill:#000000;fill-opacity:1;stroke:none">
1417
       <text
1418
          sodipodi:linespacing="125%"
1419
          id="text3898-9"
1420
          y="10.883301"
1421
          x="5.7239423"
1422
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;font-family:Sans"
1423
+         style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1"
1424
          xml:space="preserve"><tspan
1425
-           style="font-weight:bold;stroke:#000000;stroke-opacity:1;-inkscape-font-specification:Sans Bold"
1426
+           style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-opacity:1"
1427
            y="10.883301"
1428
            x="5.7239423"
1429
            id="tspan3900-9"
1430
@@ -1157,9 +629,9 @@
1431
          id="text3892-7"
1432
          y="10.902241"
1433
          x="5.7016349"
1434
-         style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#fcfcfc;fill-opacity:1;stroke:none;font-family:Sans"
1435
+         style="font-style:normal;font-weight:normal;font-size:8px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
1436
          xml:space="preserve"><tspan
1437
-           style="font-weight:bold;stroke:none;-inkscape-font-specification:Sans Bold"
1438
+           style="font-weight:bold;-inkscape-font-specification:'Sans Bold';fill:#000000;fill-opacity:1;stroke:none"
1439
            y="10.902241"
1440
            x="5.7016349"
1441
            id="tspan3894-2"
1442
Refresh

No build results available

Refresh

No rpmlint results available

Request History
Aliaksei Padvalski's avatar

awissu created request over 9 years ago


Aliaksei Padvalski's avatar

awissu accepted request over 9 years ago

Please add a comment