Overview
sview.changes
Changed
x
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
35
<Add before='midl /nologo /win32 /W1 $res_includes /client none /tlb "$(TARGET_OBJECT_DIR)\StActiveX.idl.tlb" 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
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 "$(TARGET_OBJECT_DIR)" MKDIR "$(TARGET_OBJECT_DIR)"' />
57
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="$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb" $res_includes -fo $resource_output $file' />
89
- <Option compiler="windows_sdk_x86" use="1" buildCommand='$rescomp -DST_OCX_TLB_PATH="$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb" $res_includes -fo $resource_output $file' />
90
- <Option target="WIN_gcc_x86" />
91
+ <Option compiler="msvc10" use="1" buildCommand='$rescomp -DST_OCX_TLB_PATH="$(TARGET_OBJECT_DIR)/StActiveX.idl.tlb" $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
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
44
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
@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
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
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
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
@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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
37
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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="<{~None~}>" />
107
+ </Unit>
108
<Unit filename="../include/StCore/StApplication.h">
109
<Option target="<{~None~}>" />
110
</Unit>
111
sview-15_10.tar.gz/StCore/StEventsBuffer.h -> sview-15_11.tar.gz/StCore/StEventsBuffer.h
Changed
79
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
65
return;
66
}
67
case StAndroidGlue::CommandId_FocusLost: {
68
- //
69
+ myKeysState.reset();
70
return;
71
}
72
case StAndroidGlue::CommandId_ConfigChanged: {
73
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
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
26
#include <X11/xpm.h>
27
28
#include <cmath>
29
+#include <vector>
30
31
#include "../share/sView/icons/menu.xpm"
32
33
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
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
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
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
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
#include <StGL/StGLContext.h>
27
28
#include <cmath>
29
+#include <vector>
30
31
static SV_THREAD_FUNCTION threadCreateWindows(void* inStWin);
32
33
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
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
27
xDNDSelection(None),
28
xDNDProxy(None),
29
xDNDAware(None),
30
+ xDNDUriList(None),
31
xDNDPlainText(None),
32
xDNDPrimary(None),
33
XA_TARGETS(None),
34
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
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
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
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
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
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
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
39
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
10
}
11
12
ST_LOCAL StPlayList& getPlayList() {
13
- return myPlayList;
14
+ return *myPlayList;
15
}
16
17
ST_LOCAL void setStereoFormat(const StFormat theSrcFormat) {
18
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
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
39
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
267
myLoader->doLoadNext();
268
}
269
270
- const bool isMouseMove = myWindow->isMouseMoved();
271
if(mySlideShowTimer.getElapsedTimeInSec() > mySlideShowDelay) {
272
mySlideShowTimer.restart();
273
doListNext();
274
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
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
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
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
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
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
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
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
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
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
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
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
147
myImage(NULL),
148
myDescr(NULL),
149
myMsgStack(NULL),
150
+ myPlayList(NULL),
151
//
152
myMenuRoot(NULL),
153
//
154
155
myBtnSwapLR(NULL),
156
myBtnPanorama(NULL),
157
myBtnSrcFrmt(NULL),
158
- myBtnPlayList(NULL),
159
+ myBtnList(NULL),
160
myBtnFull(NULL),
161
//
162
myFpsWidget(NULL),
163
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
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
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
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
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
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
2
class StGLMsgStack;
3
class StGLFpsLabel;
4
class StGLTable;
5
+class StGLPlayList;
6
+class StPlayList;
7
class StWindow;
8
9
/**
10
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
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
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
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
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
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
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
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
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
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
# @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
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
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
35
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /manifest "..\dpiAware.manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
51
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
466
break;
467
}
468
case BLOCK_SLEEP_FULLSCREEN: {
469
- toBlockSleepDisplay = myWindow->isFullScreen();;
470
+ toBlockSleepDisplay = myWindow->isFullScreen();
471
toBlockSleepSystem = toBlockSleepDisplay;
472
break;
473
}
474
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
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
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
2
3
#include <StGLWidgets/StGLImageRegion.h>
4
5
+#include <vector>
6
+
7
// forward declarations
8
class StCheckUpdates;
9
class StFileNode;
10
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
173
myThread.nullify();
174
175
deinit();
176
+ myHWAccelCtx.nullify();
177
}
178
179
namespace {
180
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
# @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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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="<{~None~}>" />
59
sview-15_10.tar.gz/StOutAnaglyph/StOutAnaglyph.cpp -> sview-15_11.tar.gz/StOutAnaglyph/StOutAnaglyph.cpp
Changed
36
1
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
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
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
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
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
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
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
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
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
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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
190
}
191
StWindow::setPlacement(aRect, true);
192
}
193
+ checkHdmiPack();
194
StWindow::setTitle("sView - Distorted Renderer");
195
196
StRectI_t aMargins;
197
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
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
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
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
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
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
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
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
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
470
myMargins.bottom = 0;
471
}
472
StWindow::setFullScreen(theFullScreen);
473
+ if(!wasFullscreen) {
474
+ checkHdmiPack();
475
+ }
476
}
477
478
void StOutDistorted::stglDraw() {
479
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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="<{~None~}>" />
59
sview-15_10.tar.gz/StOutDual/StOutDual.cpp -> sview-15_11.tar.gz/StOutDual/StOutDual.cpp
Changed
36
1
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
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
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
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
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
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
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
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
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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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="<{~None~}>" />
59
sview-15_10.tar.gz/StOutInterlace/StOutInterlace.cpp -> sview-15_11.tar.gz/StOutInterlace/StOutInterlace.cpp
Changed
36
1
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
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
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
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
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
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
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
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
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
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
* 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
* 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
42
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
48
StImage::nullify();
49
setState();
50
close();
51
+ myMetadata.clear();
52
53
switch(theImageType) {
54
case ST_TYPE_PNG:
55
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
}
3
4
void StGLTextureData::reset() {
5
+ myDataPair.nullify();
6
myDataL.nullify();
7
myDataR.nullify();
8
if(myDataPtr != NULL) {
9
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
36
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /manifest "..\dpiAware.manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
*/
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
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
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
27
#include <StSlots/StAction.h>
28
29
#include <map>
30
+#include <string>
31
32
class StEventsBuffer;
33
class StSettings;
34
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
35
<Add after='mt.exe /nologo /manifest "$(TARGET_OUTPUT_FILE).manifest" /manifest "..\dpiAware.manifest" /outputresource:"$(TARGET_OUTPUT_FILE)";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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Login required, please
login
or
signup
in order to comment
Request History
awissu created request over 9 years ago
awissu accepted request over 9 years ago
Please add a comment