mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-17 21:29:59 +01:00
First operational implementation of Displays View
This commit is contained in:
@@ -563,7 +563,7 @@ set(VMIX_RSC_FILES
|
|||||||
./rsc/mesh/icon_crop.ply
|
./rsc/mesh/icon_crop.ply
|
||||||
./rsc/mesh/icon_eye.ply
|
./rsc/mesh/icon_eye.ply
|
||||||
./rsc/mesh/icon_eye_slash.ply
|
./rsc/mesh/icon_eye_slash.ply
|
||||||
./rsc/mesh/icon_vector_square_slash.ply
|
./rsc/mesh/icon_tv.ply
|
||||||
./rsc/mesh/icon_cube.ply
|
./rsc/mesh/icon_cube.ply
|
||||||
./rsc/mesh/icon_sequence.ply
|
./rsc/mesh/icon_sequence.ply
|
||||||
./rsc/mesh/icon_receive.ply
|
./rsc/mesh/icon_receive.ply
|
||||||
|
|||||||
580
rsc/mesh/icon_tv.ply
Normal file
580
rsc/mesh/icon_tv.ply
Normal file
@@ -0,0 +1,580 @@
|
|||||||
|
ply
|
||||||
|
format ascii 1.0
|
||||||
|
comment Created by Blender 3.2.2 - www.blender.org
|
||||||
|
element vertex 285
|
||||||
|
property float x
|
||||||
|
property float y
|
||||||
|
property float z
|
||||||
|
element face 285
|
||||||
|
property list uchar uint vertex_indices
|
||||||
|
end_header
|
||||||
|
-0.169188 -0.075740 0.000000
|
||||||
|
-0.169243 -0.070732 0.000000
|
||||||
|
-0.169243 -0.074063 0.000000
|
||||||
|
-0.169243 -0.061524 0.000000
|
||||||
|
-0.169243 -0.047614 0.000000
|
||||||
|
-0.169243 -0.030177 0.000000
|
||||||
|
-0.169243 -0.010389 0.000000
|
||||||
|
-0.169243 0.010574 0.000000
|
||||||
|
-0.169243 0.031537 0.000000
|
||||||
|
-0.169243 0.051325 0.000000
|
||||||
|
-0.169243 0.068762 0.000000
|
||||||
|
-0.169243 0.082672 0.000000
|
||||||
|
-0.169243 0.091880 0.000000
|
||||||
|
-0.169243 0.095211 0.000000
|
||||||
|
-0.169188 0.096888 0.000000
|
||||||
|
-0.169023 -0.077400 0.000000
|
||||||
|
-0.169023 0.098548 0.000000
|
||||||
|
-0.168751 -0.079040 0.000000
|
||||||
|
-0.168751 0.100187 0.000000
|
||||||
|
-0.168373 -0.080652 0.000000
|
||||||
|
-0.168373 0.101800 0.000000
|
||||||
|
-0.167892 -0.082234 0.000000
|
||||||
|
-0.167892 0.103382 0.000000
|
||||||
|
-0.167310 -0.083780 0.000000
|
||||||
|
-0.167310 0.104927 0.000000
|
||||||
|
-0.166629 -0.085284 0.000000
|
||||||
|
-0.166629 0.106432 0.000000
|
||||||
|
-0.165850 -0.086742 0.000000
|
||||||
|
-0.165850 0.107890 0.000000
|
||||||
|
-0.164976 -0.088150 0.000000
|
||||||
|
-0.164976 0.109298 0.000000
|
||||||
|
-0.164010 0.110649 0.000000
|
||||||
|
-0.164010 -0.089501 0.000000
|
||||||
|
-0.162952 0.111940 0.000000
|
||||||
|
-0.162952 -0.090792 0.000000
|
||||||
|
-0.161805 0.113165 0.000000
|
||||||
|
-0.161805 -0.092017 0.000000
|
||||||
|
-0.160580 0.114312 0.000000
|
||||||
|
-0.160580 -0.093164 0.000000
|
||||||
|
-0.159289 0.115369 0.000000
|
||||||
|
-0.159289 -0.094221 0.000000
|
||||||
|
-0.157937 0.116336 0.000000
|
||||||
|
-0.157937 -0.095188 0.000000
|
||||||
|
-0.156529 0.117209 0.000000
|
||||||
|
-0.156529 -0.096062 0.000000
|
||||||
|
-0.155070 0.117988 0.000000
|
||||||
|
-0.155070 -0.096840 0.000000
|
||||||
|
-0.153566 0.118669 0.000000
|
||||||
|
-0.153566 -0.097521 0.000000
|
||||||
|
-0.152020 0.119251 0.000000
|
||||||
|
-0.152020 -0.098103 0.000000
|
||||||
|
-0.150438 0.119732 0.000000
|
||||||
|
-0.150438 -0.098584 0.000000
|
||||||
|
-0.149867 0.100208 0.000000
|
||||||
|
-0.148825 0.120109 0.000000
|
||||||
|
-0.148825 -0.098962 0.000000
|
||||||
|
-0.149867 -0.079856 0.000000
|
||||||
|
0.150125 0.100208 0.000000
|
||||||
|
0.150125 -0.079856 0.000000
|
||||||
|
-0.147185 0.120382 0.000000
|
||||||
|
-0.147185 -0.099234 0.000000
|
||||||
|
-0.145524 0.120546 0.000000
|
||||||
|
-0.145524 -0.099399 0.000000
|
||||||
|
-0.143847 0.120602 0.000000
|
||||||
|
-0.143847 -0.099454 0.000000
|
||||||
|
0.143979 0.120602 0.000000
|
||||||
|
-0.141348 -0.099454 0.000000
|
||||||
|
-0.134441 -0.099454 0.000000
|
||||||
|
-0.124006 -0.099454 0.000000
|
||||||
|
-0.110926 -0.099454 0.000000
|
||||||
|
-0.118432 -0.126889 0.000000
|
||||||
|
-0.118451 -0.126468 0.000000
|
||||||
|
-0.118451 -0.126625 0.000000
|
||||||
|
-0.118451 -0.126034 0.000000
|
||||||
|
-0.118451 -0.125379 0.000000
|
||||||
|
-0.118451 -0.124557 0.000000
|
||||||
|
-0.118451 -0.123624 0.000000
|
||||||
|
-0.118451 -0.122636 0.000000
|
||||||
|
-0.118451 -0.121647 0.000000
|
||||||
|
-0.118451 -0.120715 0.000000
|
||||||
|
-0.118451 -0.119893 0.000000
|
||||||
|
-0.118451 -0.119237 0.000000
|
||||||
|
-0.118451 -0.118803 0.000000
|
||||||
|
-0.118451 -0.118646 0.000000
|
||||||
|
-0.118432 -0.118382 0.000000
|
||||||
|
-0.118377 -0.127150 0.000000
|
||||||
|
-0.118377 -0.118122 0.000000
|
||||||
|
-0.118286 -0.127407 0.000000
|
||||||
|
-0.118286 -0.117864 0.000000
|
||||||
|
-0.118160 -0.127661 0.000000
|
||||||
|
-0.118160 -0.117611 0.000000
|
||||||
|
-0.118000 -0.127909 0.000000
|
||||||
|
-0.118000 -0.117362 0.000000
|
||||||
|
-0.117806 -0.128152 0.000000
|
||||||
|
-0.117806 -0.117119 0.000000
|
||||||
|
-0.117579 -0.128388 0.000000
|
||||||
|
-0.117579 -0.116883 0.000000
|
||||||
|
-0.117319 -0.128618 0.000000
|
||||||
|
-0.117319 -0.116654 0.000000
|
||||||
|
-0.117028 -0.128839 0.000000
|
||||||
|
-0.117028 -0.116433 0.000000
|
||||||
|
-0.116706 -0.129051 0.000000
|
||||||
|
-0.116706 -0.116220 0.000000
|
||||||
|
-0.116353 -0.129254 0.000000
|
||||||
|
-0.116353 -0.116017 0.000000
|
||||||
|
-0.115971 -0.129446 0.000000
|
||||||
|
-0.115971 -0.115825 0.000000
|
||||||
|
-0.115563 -0.129627 0.000000
|
||||||
|
-0.115563 -0.115645 0.000000
|
||||||
|
-0.115132 -0.129793 0.000000
|
||||||
|
-0.115132 -0.115479 0.000000
|
||||||
|
-0.114682 -0.129945 0.000000
|
||||||
|
-0.114682 -0.115327 0.000000
|
||||||
|
-0.114212 -0.130082 0.000000
|
||||||
|
-0.114212 -0.115189 0.000000
|
||||||
|
-0.113726 -0.130204 0.000000
|
||||||
|
-0.113726 -0.115067 0.000000
|
||||||
|
-0.113225 -0.130311 0.000000
|
||||||
|
-0.113225 -0.114960 0.000000
|
||||||
|
-0.112709 -0.130403 0.000000
|
||||||
|
-0.112709 -0.114869 0.000000
|
||||||
|
-0.112182 -0.130478 0.000000
|
||||||
|
-0.112182 -0.114793 0.000000
|
||||||
|
-0.111644 -0.130538 0.000000
|
||||||
|
-0.111644 -0.114734 0.000000
|
||||||
|
-0.111098 -0.130580 0.000000
|
||||||
|
-0.111098 -0.114691 0.000000
|
||||||
|
-0.110544 -0.130606 0.000000
|
||||||
|
-0.110544 -0.114665 0.000000
|
||||||
|
-0.096082 -0.099454 0.000000
|
||||||
|
-0.109985 -0.130615 0.000000
|
||||||
|
-0.109985 -0.114656 0.000000
|
||||||
|
-0.105654 -0.130615 0.000000
|
||||||
|
-0.016865 -0.114656 0.000000
|
||||||
|
-0.093681 -0.130615 0.000000
|
||||||
|
-0.080356 -0.099454 0.000000
|
||||||
|
-0.075594 -0.130615 0.000000
|
||||||
|
-0.064630 -0.099454 0.000000
|
||||||
|
-0.052921 -0.130615 0.000000
|
||||||
|
-0.049786 -0.099454 0.000000
|
||||||
|
-0.027192 -0.130615 0.000000
|
||||||
|
-0.036706 -0.099454 0.000000
|
||||||
|
-0.026271 -0.099454 0.000000
|
||||||
|
0.000066 -0.130615 0.000000
|
||||||
|
-0.019363 -0.099454 0.000000
|
||||||
|
-0.016865 -0.099454 0.000000
|
||||||
|
0.016997 -0.099454 0.000000
|
||||||
|
0.027324 -0.130615 0.000000
|
||||||
|
0.016997 -0.114656 0.000000
|
||||||
|
0.143979 -0.099454 0.000000
|
||||||
|
0.018829 -0.114656 0.000000
|
||||||
|
0.023895 -0.114656 0.000000
|
||||||
|
0.031547 -0.114656 0.000000
|
||||||
|
0.053054 -0.130615 0.000000
|
||||||
|
0.041139 -0.114656 0.000000
|
||||||
|
0.052025 -0.114656 0.000000
|
||||||
|
0.063557 -0.114656 0.000000
|
||||||
|
0.075726 -0.130615 0.000000
|
||||||
|
0.075089 -0.114656 0.000000
|
||||||
|
0.085975 -0.114656 0.000000
|
||||||
|
0.093813 -0.130615 0.000000
|
||||||
|
0.095567 -0.114656 0.000000
|
||||||
|
0.105786 -0.130615 0.000000
|
||||||
|
0.103219 -0.114656 0.000000
|
||||||
|
0.108285 -0.114656 0.000000
|
||||||
|
0.110117 -0.130615 0.000000
|
||||||
|
0.110117 -0.114656 0.000000
|
||||||
|
0.110676 -0.114665 0.000000
|
||||||
|
0.110676 -0.130606 0.000000
|
||||||
|
0.111230 -0.114691 0.000000
|
||||||
|
0.111230 -0.130580 0.000000
|
||||||
|
0.111776 -0.114734 0.000000
|
||||||
|
0.111776 -0.130538 0.000000
|
||||||
|
0.112314 -0.114793 0.000000
|
||||||
|
0.112314 -0.130478 0.000000
|
||||||
|
0.112842 -0.114869 0.000000
|
||||||
|
0.112842 -0.130403 0.000000
|
||||||
|
0.113357 -0.114960 0.000000
|
||||||
|
0.113357 -0.130311 0.000000
|
||||||
|
0.113858 -0.115067 0.000000
|
||||||
|
0.113858 -0.130204 0.000000
|
||||||
|
0.114345 -0.115189 0.000000
|
||||||
|
0.114345 -0.130082 0.000000
|
||||||
|
0.114814 -0.115327 0.000000
|
||||||
|
0.114814 -0.129945 0.000000
|
||||||
|
0.115264 -0.115479 0.000000
|
||||||
|
0.115264 -0.129793 0.000000
|
||||||
|
0.115695 -0.115645 0.000000
|
||||||
|
0.115695 -0.129627 0.000000
|
||||||
|
0.116103 -0.115825 0.000000
|
||||||
|
0.116103 -0.129446 0.000000
|
||||||
|
0.116485 -0.116017 0.000000
|
||||||
|
0.116485 -0.129254 0.000000
|
||||||
|
0.116838 -0.116220 0.000000
|
||||||
|
0.116838 -0.129051 0.000000
|
||||||
|
0.117160 -0.116433 0.000000
|
||||||
|
0.117160 -0.128839 0.000000
|
||||||
|
0.117452 -0.116654 0.000000
|
||||||
|
0.117452 -0.128618 0.000000
|
||||||
|
0.117711 -0.116883 0.000000
|
||||||
|
0.117711 -0.128388 0.000000
|
||||||
|
0.117938 -0.117119 0.000000
|
||||||
|
0.117938 -0.128152 0.000000
|
||||||
|
0.118132 -0.117362 0.000000
|
||||||
|
0.118132 -0.127909 0.000000
|
||||||
|
0.118293 -0.117611 0.000000
|
||||||
|
0.118293 -0.127661 0.000000
|
||||||
|
0.118419 -0.117864 0.000000
|
||||||
|
0.118419 -0.127407 0.000000
|
||||||
|
0.118509 -0.118122 0.000000
|
||||||
|
0.118509 -0.127150 0.000000
|
||||||
|
0.118564 -0.118383 0.000000
|
||||||
|
0.118564 -0.126889 0.000000
|
||||||
|
0.118583 -0.118646 0.000000
|
||||||
|
0.118583 -0.126625 0.000000
|
||||||
|
0.118583 -0.126468 0.000000
|
||||||
|
0.118583 -0.126034 0.000000
|
||||||
|
0.118583 -0.125379 0.000000
|
||||||
|
0.118583 -0.124557 0.000000
|
||||||
|
0.118583 -0.123624 0.000000
|
||||||
|
0.118583 -0.122636 0.000000
|
||||||
|
0.118583 -0.121647 0.000000
|
||||||
|
0.118583 -0.120715 0.000000
|
||||||
|
0.118583 -0.119893 0.000000
|
||||||
|
0.118583 -0.119237 0.000000
|
||||||
|
0.118583 -0.118803 0.000000
|
||||||
|
0.145656 0.120546 0.000000
|
||||||
|
0.145656 -0.099399 0.000000
|
||||||
|
0.147317 0.120382 0.000000
|
||||||
|
0.147317 -0.099234 0.000000
|
||||||
|
0.148957 0.120109 0.000000
|
||||||
|
0.148957 -0.098962 0.000000
|
||||||
|
0.150570 0.119732 0.000000
|
||||||
|
0.150570 -0.098584 0.000000
|
||||||
|
0.152152 0.119251 0.000000
|
||||||
|
0.152152 -0.098103 0.000000
|
||||||
|
0.153698 0.118669 0.000000
|
||||||
|
0.153698 -0.097521 0.000000
|
||||||
|
0.155203 0.117988 0.000000
|
||||||
|
0.155203 -0.096840 0.000000
|
||||||
|
0.156661 0.117209 0.000000
|
||||||
|
0.156661 -0.096062 0.000000
|
||||||
|
0.158069 0.116336 0.000000
|
||||||
|
0.158069 -0.095188 0.000000
|
||||||
|
0.159421 0.115369 0.000000
|
||||||
|
0.159421 -0.094221 0.000000
|
||||||
|
0.160712 0.114312 0.000000
|
||||||
|
0.160712 -0.093164 0.000000
|
||||||
|
0.161937 0.113165 0.000000
|
||||||
|
0.161937 -0.092017 0.000000
|
||||||
|
0.163084 0.111940 0.000000
|
||||||
|
0.163084 -0.090792 0.000000
|
||||||
|
0.164142 0.110649 0.000000
|
||||||
|
0.164142 -0.089501 0.000000
|
||||||
|
0.165109 0.109298 0.000000
|
||||||
|
0.165109 -0.088150 0.000000
|
||||||
|
0.165982 0.107890 0.000000
|
||||||
|
0.165982 -0.086742 0.000000
|
||||||
|
0.166761 0.106432 0.000000
|
||||||
|
0.166761 -0.085284 0.000000
|
||||||
|
0.167442 0.104927 0.000000
|
||||||
|
0.167442 -0.083780 0.000000
|
||||||
|
0.168025 0.103382 0.000000
|
||||||
|
0.168025 -0.082234 0.000000
|
||||||
|
0.168505 0.101800 0.000000
|
||||||
|
0.168505 -0.080652 0.000000
|
||||||
|
0.168883 0.100187 0.000000
|
||||||
|
0.168883 -0.079040 0.000000
|
||||||
|
0.169155 0.098548 0.000000
|
||||||
|
0.169155 -0.077400 0.000000
|
||||||
|
0.169320 0.096888 0.000000
|
||||||
|
0.169320 -0.075740 0.000000
|
||||||
|
0.169376 0.095211 0.000000
|
||||||
|
0.169376 -0.074063 0.000000
|
||||||
|
0.169376 0.091880 0.000000
|
||||||
|
0.169376 -0.070732 0.000000
|
||||||
|
0.169376 -0.061524 0.000000
|
||||||
|
0.169376 -0.047614 0.000000
|
||||||
|
0.169376 -0.030177 0.000000
|
||||||
|
0.169376 -0.010389 0.000000
|
||||||
|
0.169376 0.010574 0.000000
|
||||||
|
0.169376 0.031537 0.000000
|
||||||
|
0.169376 0.051325 0.000000
|
||||||
|
0.169376 0.068762 0.000000
|
||||||
|
0.169376 0.082672 0.000000
|
||||||
|
3 0 1 2
|
||||||
|
3 0 3 1
|
||||||
|
3 0 4 3
|
||||||
|
3 0 5 4
|
||||||
|
3 0 6 5
|
||||||
|
3 0 7 6
|
||||||
|
3 0 8 7
|
||||||
|
3 0 9 8
|
||||||
|
3 0 10 9
|
||||||
|
3 0 11 10
|
||||||
|
3 0 12 11
|
||||||
|
3 0 13 12
|
||||||
|
3 0 14 13
|
||||||
|
3 15 14 0
|
||||||
|
3 15 16 14
|
||||||
|
3 17 16 15
|
||||||
|
3 17 18 16
|
||||||
|
3 19 18 17
|
||||||
|
3 19 20 18
|
||||||
|
3 21 20 19
|
||||||
|
3 21 22 20
|
||||||
|
3 23 22 21
|
||||||
|
3 23 24 22
|
||||||
|
3 25 24 23
|
||||||
|
3 25 26 24
|
||||||
|
3 27 26 25
|
||||||
|
3 27 28 26
|
||||||
|
3 29 28 27
|
||||||
|
3 29 30 28
|
||||||
|
3 29 31 30
|
||||||
|
3 32 31 29
|
||||||
|
3 32 33 31
|
||||||
|
3 34 33 32
|
||||||
|
3 34 35 33
|
||||||
|
3 36 35 34
|
||||||
|
3 36 37 35
|
||||||
|
3 38 37 36
|
||||||
|
3 38 39 37
|
||||||
|
3 40 39 38
|
||||||
|
3 40 41 39
|
||||||
|
3 42 41 40
|
||||||
|
3 42 43 41
|
||||||
|
3 44 43 42
|
||||||
|
3 44 45 43
|
||||||
|
3 46 45 44
|
||||||
|
3 46 47 45
|
||||||
|
3 48 47 46
|
||||||
|
3 48 49 47
|
||||||
|
3 50 49 48
|
||||||
|
3 50 51 49
|
||||||
|
3 52 51 50
|
||||||
|
3 52 53 51
|
||||||
|
3 53 54 51
|
||||||
|
3 55 56 52
|
||||||
|
3 56 53 52
|
||||||
|
3 57 54 53
|
||||||
|
3 55 58 56
|
||||||
|
3 57 59 54
|
||||||
|
3 60 58 55
|
||||||
|
3 57 61 59
|
||||||
|
3 62 58 60
|
||||||
|
3 57 63 61
|
||||||
|
3 64 58 62
|
||||||
|
3 57 65 63
|
||||||
|
3 66 58 64
|
||||||
|
3 67 58 66
|
||||||
|
3 68 58 67
|
||||||
|
3 69 58 68
|
||||||
|
3 70 71 72
|
||||||
|
3 70 73 71
|
||||||
|
3 70 74 73
|
||||||
|
3 70 75 74
|
||||||
|
3 70 76 75
|
||||||
|
3 70 77 76
|
||||||
|
3 70 78 77
|
||||||
|
3 70 79 78
|
||||||
|
3 70 80 79
|
||||||
|
3 70 81 80
|
||||||
|
3 70 82 81
|
||||||
|
3 70 83 82
|
||||||
|
3 70 84 83
|
||||||
|
3 85 84 70
|
||||||
|
3 85 86 84
|
||||||
|
3 87 86 85
|
||||||
|
3 87 88 86
|
||||||
|
3 89 88 87
|
||||||
|
3 89 90 88
|
||||||
|
3 91 90 89
|
||||||
|
3 91 92 90
|
||||||
|
3 93 92 91
|
||||||
|
3 93 94 92
|
||||||
|
3 95 94 93
|
||||||
|
3 95 96 94
|
||||||
|
3 97 96 95
|
||||||
|
3 97 98 96
|
||||||
|
3 99 98 97
|
||||||
|
3 99 100 98
|
||||||
|
3 101 100 99
|
||||||
|
3 101 102 100
|
||||||
|
3 103 102 101
|
||||||
|
3 103 104 102
|
||||||
|
3 105 104 103
|
||||||
|
3 105 106 104
|
||||||
|
3 107 106 105
|
||||||
|
3 107 108 106
|
||||||
|
3 109 108 107
|
||||||
|
3 109 110 108
|
||||||
|
3 111 110 109
|
||||||
|
3 111 112 110
|
||||||
|
3 113 112 111
|
||||||
|
3 113 114 112
|
||||||
|
3 115 114 113
|
||||||
|
3 115 116 114
|
||||||
|
3 117 116 115
|
||||||
|
3 117 118 116
|
||||||
|
3 119 118 117
|
||||||
|
3 119 120 118
|
||||||
|
3 121 120 119
|
||||||
|
3 121 122 120
|
||||||
|
3 123 122 121
|
||||||
|
3 123 124 122
|
||||||
|
3 125 124 123
|
||||||
|
3 125 126 124
|
||||||
|
3 127 126 125
|
||||||
|
3 127 128 126
|
||||||
|
3 129 58 69
|
||||||
|
3 130 128 127
|
||||||
|
3 130 131 128
|
||||||
|
3 132 131 130
|
||||||
|
3 132 133 131
|
||||||
|
3 134 133 132
|
||||||
|
3 135 58 129
|
||||||
|
3 136 133 134
|
||||||
|
3 137 58 135
|
||||||
|
3 138 133 136
|
||||||
|
3 139 58 137
|
||||||
|
3 140 133 138
|
||||||
|
3 141 58 139
|
||||||
|
3 142 58 141
|
||||||
|
3 143 133 140
|
||||||
|
3 144 58 142
|
||||||
|
3 145 58 144
|
||||||
|
3 143 145 133
|
||||||
|
3 143 146 145
|
||||||
|
3 146 58 145
|
||||||
|
3 147 148 143
|
||||||
|
3 148 146 143
|
||||||
|
3 149 58 146
|
||||||
|
3 147 150 148
|
||||||
|
3 147 151 150
|
||||||
|
3 147 152 151
|
||||||
|
3 153 152 147
|
||||||
|
3 153 154 152
|
||||||
|
3 153 155 154
|
||||||
|
3 153 156 155
|
||||||
|
3 157 156 153
|
||||||
|
3 157 158 156
|
||||||
|
3 157 159 158
|
||||||
|
3 160 159 157
|
||||||
|
3 160 161 159
|
||||||
|
3 162 161 160
|
||||||
|
3 162 163 161
|
||||||
|
3 162 164 163
|
||||||
|
3 165 164 162
|
||||||
|
3 165 166 164
|
||||||
|
3 165 167 166
|
||||||
|
3 168 167 165
|
||||||
|
3 168 169 167
|
||||||
|
3 170 169 168
|
||||||
|
3 170 171 169
|
||||||
|
3 172 171 170
|
||||||
|
3 172 173 171
|
||||||
|
3 174 173 172
|
||||||
|
3 174 175 173
|
||||||
|
3 176 175 174
|
||||||
|
3 176 177 175
|
||||||
|
3 178 177 176
|
||||||
|
3 178 179 177
|
||||||
|
3 180 179 178
|
||||||
|
3 180 181 179
|
||||||
|
3 182 181 180
|
||||||
|
3 182 183 181
|
||||||
|
3 184 183 182
|
||||||
|
3 184 185 183
|
||||||
|
3 186 185 184
|
||||||
|
3 186 187 185
|
||||||
|
3 188 187 186
|
||||||
|
3 188 189 187
|
||||||
|
3 190 189 188
|
||||||
|
3 190 191 189
|
||||||
|
3 192 191 190
|
||||||
|
3 192 193 191
|
||||||
|
3 194 193 192
|
||||||
|
3 194 195 193
|
||||||
|
3 196 195 194
|
||||||
|
3 196 197 195
|
||||||
|
3 198 197 196
|
||||||
|
3 198 199 197
|
||||||
|
3 200 199 198
|
||||||
|
3 200 201 199
|
||||||
|
3 202 201 200
|
||||||
|
3 202 203 201
|
||||||
|
3 204 203 202
|
||||||
|
3 204 205 203
|
||||||
|
3 206 205 204
|
||||||
|
3 206 207 205
|
||||||
|
3 208 207 206
|
||||||
|
3 208 209 207
|
||||||
|
3 210 209 208
|
||||||
|
3 210 211 209
|
||||||
|
3 212 211 210
|
||||||
|
3 212 213 211
|
||||||
|
3 214 213 212
|
||||||
|
3 215 213 214
|
||||||
|
3 216 213 215
|
||||||
|
3 217 213 216
|
||||||
|
3 218 213 217
|
||||||
|
3 219 213 218
|
||||||
|
3 220 213 219
|
||||||
|
3 221 213 220
|
||||||
|
3 222 213 221
|
||||||
|
3 223 213 222
|
||||||
|
3 224 213 223
|
||||||
|
3 225 213 224
|
||||||
|
3 57 226 65
|
||||||
|
3 227 58 149
|
||||||
|
3 57 228 226
|
||||||
|
3 229 58 227
|
||||||
|
3 57 230 228
|
||||||
|
3 231 58 229
|
||||||
|
3 57 232 230
|
||||||
|
3 233 58 231
|
||||||
|
3 233 57 58
|
||||||
|
3 233 232 57
|
||||||
|
3 233 234 232
|
||||||
|
3 235 234 233
|
||||||
|
3 235 236 234
|
||||||
|
3 237 236 235
|
||||||
|
3 237 238 236
|
||||||
|
3 239 238 237
|
||||||
|
3 239 240 238
|
||||||
|
3 241 240 239
|
||||||
|
3 241 242 240
|
||||||
|
3 243 242 241
|
||||||
|
3 243 244 242
|
||||||
|
3 245 244 243
|
||||||
|
3 245 246 244
|
||||||
|
3 247 246 245
|
||||||
|
3 247 248 246
|
||||||
|
3 249 248 247
|
||||||
|
3 249 250 248
|
||||||
|
3 251 250 249
|
||||||
|
3 251 252 250
|
||||||
|
3 253 252 251
|
||||||
|
3 253 254 252
|
||||||
|
3 255 254 253
|
||||||
|
3 255 256 254
|
||||||
|
3 257 256 255
|
||||||
|
3 257 258 256
|
||||||
|
3 259 258 257
|
||||||
|
3 259 260 258
|
||||||
|
3 261 260 259
|
||||||
|
3 261 262 260
|
||||||
|
3 263 262 261
|
||||||
|
3 263 264 262
|
||||||
|
3 265 264 263
|
||||||
|
3 265 266 264
|
||||||
|
3 267 266 265
|
||||||
|
3 267 268 266
|
||||||
|
3 269 268 267
|
||||||
|
3 269 270 268
|
||||||
|
3 271 270 269
|
||||||
|
3 271 272 270
|
||||||
|
3 273 272 271
|
||||||
|
3 273 274 272
|
||||||
|
3 275 274 273
|
||||||
|
3 276 274 275
|
||||||
|
3 277 274 276
|
||||||
|
3 278 274 277
|
||||||
|
3 279 274 278
|
||||||
|
3 280 274 279
|
||||||
|
3 281 274 280
|
||||||
|
3 282 274 281
|
||||||
|
3 283 274 282
|
||||||
|
3 284 274 283
|
||||||
@@ -220,6 +220,7 @@ Handles::Handles(Type type) : Node(), type_(type)
|
|||||||
static Mesh *handle_menu = new Mesh("mesh/border_handles_menu.ply");
|
static Mesh *handle_menu = new Mesh("mesh/border_handles_menu.ply");
|
||||||
static Mesh *handle_lock = new Mesh("mesh/border_handles_lock.ply");
|
static Mesh *handle_lock = new Mesh("mesh/border_handles_lock.ply");
|
||||||
static Mesh *handle_unlock = new Mesh("mesh/border_handles_lock_open.ply");
|
static Mesh *handle_unlock = new Mesh("mesh/border_handles_lock_open.ply");
|
||||||
|
static Mesh *handle_eyeslash = new Mesh("mesh/icon_eye_slash.ply");
|
||||||
static Mesh *handle_shadow = new Mesh("mesh/border_handles_shadow.ply", "images/soft_shadow.dds");
|
static Mesh *handle_shadow = new Mesh("mesh/border_handles_shadow.ply", "images/soft_shadow.dds");
|
||||||
|
|
||||||
if ( type_ == Handles::ROTATE ) {
|
if ( type_ == Handles::ROTATE ) {
|
||||||
@@ -240,6 +241,9 @@ Handles::Handles(Type type) : Node(), type_(type)
|
|||||||
else if ( type_ == Handles::UNLOCKED ) {
|
else if ( type_ == Handles::UNLOCKED ) {
|
||||||
handle_ = handle_unlock;
|
handle_ = handle_unlock;
|
||||||
}
|
}
|
||||||
|
else if ( type_ == Handles::EYESLASHED ) {
|
||||||
|
handle_ = handle_eyeslash;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
handle_ = handle_corner;
|
handle_ = handle_corner;
|
||||||
}
|
}
|
||||||
@@ -371,7 +375,7 @@ void Handles::draw(glm::mat4 modelview, glm::mat4 projection)
|
|||||||
// 1. Fixed displacement by (0.12,0.12) along the rotation..
|
// 1. Fixed displacement by (0.12,0.12) along the rotation..
|
||||||
ctm = GlmToolkit::transform(glm::vec4(0.f), rot, mirror);
|
ctm = GlmToolkit::transform(glm::vec4(0.f), rot, mirror);
|
||||||
glm::vec4 pos = ctm * glm::vec4(mirror.x * 0.12f, mirror.x * 0.12f, 0.f, 1.f);
|
glm::vec4 pos = ctm * glm::vec4(mirror.x * 0.12f, mirror.x * 0.12f, 0.f, 1.f);
|
||||||
// 2. ..from the bottom right corner (1,-1)
|
// 2. ..from the bottom left corner (-1,-1)
|
||||||
vec = ( modelview * glm::vec4(-1.f, -1.f, 0.f, 1.f) ) + pos;
|
vec = ( modelview * glm::vec4(-1.f, -1.f, 0.f, 1.f) ) + pos;
|
||||||
ctm = GlmToolkit::transform(vec, rot, mirror);
|
ctm = GlmToolkit::transform(vec, rot, mirror);
|
||||||
// 3. draw
|
// 3. draw
|
||||||
@@ -402,6 +406,18 @@ void Handles::draw(glm::mat4 modelview, glm::mat4 projection)
|
|||||||
shadow_->draw( ctm, projection );
|
shadow_->draw( ctm, projection );
|
||||||
handle_->draw( ctm, projection );
|
handle_->draw( ctm, projection );
|
||||||
}
|
}
|
||||||
|
else if ( type_ == Handles::EYESLASHED ){
|
||||||
|
// one icon in bottom right corner
|
||||||
|
// 1. Fixed displacement by (0.12,0.12) along the rotation..
|
||||||
|
ctm = GlmToolkit::transform(glm::vec4(0.f), rot, mirror);
|
||||||
|
glm::vec4 pos = ctm * glm::vec4(mirror.x * 0.15f, mirror.x * 0.15f, 0.f, 1.f);
|
||||||
|
// 2. ..from the bottom left corner (-1,-1)
|
||||||
|
vec = ( modelview * glm::vec4(-1.f, -1.f, 0.f, 1.f) ) + pos;
|
||||||
|
ctm = GlmToolkit::transform(vec, rot, mirror);
|
||||||
|
// 3. draw
|
||||||
|
shadow_->draw( ctm, projection );
|
||||||
|
handle_->draw( ctm, projection );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -459,8 +475,8 @@ Symbol::Symbol(Type t, glm::vec3 pos) : Node(), type_(t)
|
|||||||
shadows[EYE] = shadow;
|
shadows[EYE] = shadow;
|
||||||
icons[EYESLASH] = new Mesh("mesh/icon_eye_slash.ply");
|
icons[EYESLASH] = new Mesh("mesh/icon_eye_slash.ply");
|
||||||
shadows[EYESLASH] = shadow;
|
shadows[EYESLASH] = shadow;
|
||||||
icons[VECTORSLASH] = new Mesh("mesh/icon_vector_square_slash.ply");
|
icons[TELEVISION] = new Mesh("mesh/icon_tv.ply");
|
||||||
shadows[VECTORSLASH] = shadow;
|
shadows[TELEVISION] = shadow;
|
||||||
icons[ARROWS] = new Mesh("mesh/icon_rightarrow.ply");
|
icons[ARROWS] = new Mesh("mesh/icon_rightarrow.ply");
|
||||||
shadows[ARROWS] = shadow;
|
shadows[ARROWS] = shadow;
|
||||||
icons[ROTATION] = new Mesh("mesh/border_handles_rotation.ply");
|
icons[ROTATION] = new Mesh("mesh/border_handles_rotation.ply");
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ protected:
|
|||||||
class Handles : public Node
|
class Handles : public Node
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef enum { RESIZE = 0, RESIZE_H, RESIZE_V, ROTATE, SCALE, CROP, MENU, LOCKED, UNLOCKED } Type;
|
typedef enum { RESIZE = 0, RESIZE_H, RESIZE_V, ROTATE, SCALE, CROP, MENU, LOCKED, UNLOCKED, EYESLASHED } Type;
|
||||||
Handles(Type type);
|
Handles(Type type);
|
||||||
~Handles();
|
~Handles();
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ class Symbol : public Node
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef enum { CIRCLE_POINT = 0, SQUARE_POINT, IMAGE, SEQUENCE, VIDEO, SESSION, CLONE, RENDER, GROUP, PATTERN, CAMERA, CUBE, SHARE, RECEIVE,
|
typedef enum { CIRCLE_POINT = 0, SQUARE_POINT, IMAGE, SEQUENCE, VIDEO, SESSION, CLONE, RENDER, GROUP, PATTERN, CAMERA, CUBE, SHARE, RECEIVE,
|
||||||
DOTS, BUSY, LOCK, UNLOCK, EYE, EYESLASH, VECTORSLASH, ARROWS, ROTATION, CROP, CIRCLE, SQUARE, CLOCK, CLOCK_H, GRID, CROSS, EMPTY } Type;
|
DOTS, BUSY, LOCK, UNLOCK, EYE, EYESLASH, TELEVISION, ARROWS, ROTATION, CROP, CIRCLE, SQUARE, CLOCK, CLOCK_H, GRID, CROSS, EMPTY } Type;
|
||||||
Symbol(Type t, glm::vec3 pos = glm::vec3(0.f));
|
Symbol(Type t, glm::vec3 pos = glm::vec3(0.f));
|
||||||
~Symbol();
|
~Symbol();
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -16,34 +16,44 @@ public:
|
|||||||
void resize (int) override;
|
void resize (int) override;
|
||||||
int size () override;
|
int size () override;
|
||||||
bool canSelect(Source *) override;
|
bool canSelect(Source *) override;
|
||||||
|
void select(glm::vec2 A, glm::vec2 B) override;
|
||||||
void recenter () override;
|
void recenter () override;
|
||||||
|
|
||||||
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
std::pair<Node *, glm::vec2> pick(glm::vec2 P) override;
|
||||||
|
void initiate () override;
|
||||||
|
void terminate (bool force = false) override;
|
||||||
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
Cursor grab (Source *s, glm::vec2 from, glm::vec2 to, std::pair<Node *, glm::vec2> pick) override;
|
||||||
void terminate(bool force) override;
|
|
||||||
void arrow (glm::vec2) override;
|
void arrow (glm::vec2) override;
|
||||||
|
|
||||||
|
glm::ivec4 outputCoordinates() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
Group *output_;
|
||||||
|
Group *output_status_;
|
||||||
Surface *output_surface_;
|
Surface *output_surface_;
|
||||||
Node *overlay_position_;
|
Surface *output_render_;
|
||||||
Node *overlay_position_cross_;
|
Switch *output_overlays_;
|
||||||
Symbol *overlay_rotation_;
|
Switch *output_mode_;
|
||||||
Symbol *overlay_rotation_fix_;
|
Handles *output_handles_;
|
||||||
Group *overlay_rotation_clock_;
|
Handles *output_menu_;
|
||||||
Symbol *overlay_rotation_clock_tic_;
|
Handles *output_visible_;
|
||||||
Node *overlay_rotation_clock_hand_;
|
Symbol *output_fullscreen_;
|
||||||
Symbol *overlay_scaling_;
|
|
||||||
Symbol *overlay_scaling_cross_;
|
|
||||||
Node *overlay_scaling_grid_;
|
|
||||||
Node *overlay_crop_;
|
|
||||||
|
|
||||||
void updateSelectionOverlay() override;
|
bool output_selected_;
|
||||||
bool overlay_selection_active_;
|
bool show_output_menu_;
|
||||||
Group *overlay_selection_stored_status_;
|
|
||||||
Handles *overlay_selection_scale_;
|
|
||||||
Handles *overlay_selection_rotate_;
|
|
||||||
|
|
||||||
void applySelectionTransform(glm::mat4 M);
|
// Node *overlay_position_;
|
||||||
|
// Node *overlay_position_cross_;
|
||||||
|
// Symbol *overlay_rotation_;
|
||||||
|
// Symbol *overlay_rotation_fix_;
|
||||||
|
// Group *overlay_rotation_clock_;
|
||||||
|
// Symbol *overlay_rotation_clock_tic_;
|
||||||
|
// Node *overlay_rotation_clock_hand_;
|
||||||
|
// Symbol *overlay_scaling_;
|
||||||
|
// Symbol *overlay_scaling_cross_;
|
||||||
|
// Node *overlay_scaling_grid_;
|
||||||
|
// Node *overlay_crop_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -330,7 +330,7 @@ void GeometryView::draw()
|
|||||||
|
|
||||||
// colored context menu
|
// colored context menu
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
||||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.36f, 0.36f, 0.36f, 0.44f));
|
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(COLOR_MENU_HOVERED, 0.5f));
|
||||||
|
|
||||||
// batch manipulation of sources in Geometry view
|
// batch manipulation of sources in Geometry view
|
||||||
if (ImGui::Selectable( ICON_FA_EXPAND " Fit all" )){
|
if (ImGui::Selectable( ICON_FA_EXPAND " Fit all" )){
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ void LayerView::draw()
|
|||||||
|
|
||||||
// colored context menu
|
// colored context menu
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
||||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.36f, 0.36f, 0.36f, 0.44f));
|
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(COLOR_MENU_HOVERED, 0.5f));
|
||||||
|
|
||||||
// special action of Mixing view
|
// special action of Mixing view
|
||||||
if (candidate_flatten_group){
|
if (candidate_flatten_group){
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ void MixingView::draw()
|
|||||||
|
|
||||||
// colored context menu
|
// colored context menu
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
ImGui::PushStyleColor(ImGuiCol_Text, ImGuiToolkit::HighlightColor());
|
||||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.36f, 0.36f, 0.36f, 0.44f));
|
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(COLOR_MENU_HOVERED, 0.5f));
|
||||||
|
|
||||||
// special action of Mixing view: link or unlink
|
// special action of Mixing view: link or unlink
|
||||||
SourceList selected = Mixer::selection().getCopy();
|
SourceList selected = Mixer::selection().getCopy();
|
||||||
|
|||||||
@@ -160,17 +160,25 @@ static void WindowMoveCallback( GLFWwindow *w, int x, int y)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void WindowToggleFullscreen( GLFWwindow *w, int button, int action, int)
|
static void OutputWindowEvent( GLFWwindow *w, int button, int action, int)
|
||||||
{
|
{
|
||||||
|
// detect mouse press
|
||||||
if (button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS)
|
if (button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS)
|
||||||
{
|
{
|
||||||
static double seconds = 0.f;
|
static double seconds = 0.f;
|
||||||
// detect double clic
|
// detect double clic
|
||||||
if ( glfwGetTime() - seconds < 0.2f ) {
|
if ( glfwGetTime() - seconds < 0.2f ) {
|
||||||
// toggle fullscreen
|
|
||||||
GLFW_window_[w]->toggleFullscreen();
|
// exit fullscreen if its the case
|
||||||
|
if (glfwGetWindowMonitor(w) != nullptr)
|
||||||
|
Rendering::manager().outputWindow().exitFullscreen();
|
||||||
|
|
||||||
|
// show main window in DISPLAYS view to
|
||||||
|
// indicate how to manipulate output window
|
||||||
|
Mixer::manager().setView(View::DISPLAYS);
|
||||||
|
Rendering::manager().mainWindow().show();
|
||||||
}
|
}
|
||||||
// for next clic detection
|
// for next double clic detection
|
||||||
seconds = glfwGetTime();
|
seconds = glfwGetTime();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,7 +192,7 @@ static void WindowCloseCallback( GLFWwindow* w )
|
|||||||
void Rendering::MonitorConnect(GLFWmonitor* monitor, int event)
|
void Rendering::MonitorConnect(GLFWmonitor* monitor, int event)
|
||||||
{
|
{
|
||||||
// reset list of monitors
|
// reset list of monitors
|
||||||
Rendering::manager().monitors_.clear();
|
Rendering::manager().monitors_geometry_.clear();
|
||||||
|
|
||||||
// list monitors with GLFW
|
// list monitors with GLFW
|
||||||
int count_monitors = 0;
|
int count_monitors = 0;
|
||||||
@@ -198,10 +206,9 @@ void Rendering::MonitorConnect(GLFWmonitor* monitor, int event)
|
|||||||
const GLFWvidmode *vm = glfwGetVideoMode(monitors[i]);
|
const GLFWvidmode *vm = glfwGetVideoMode(monitors[i]);
|
||||||
std::string n = glfwGetMonitorName(monitors[i]);
|
std::string n = glfwGetMonitorName(monitors[i]);
|
||||||
// add
|
// add
|
||||||
Rendering::manager().monitors_[n] = glm::ivec4(x, y, vm->width, vm->height);
|
Rendering::manager().monitors_geometry_[n] = glm::ivec4(x, y, vm->width, vm->height);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO : find appropriate
|
|
||||||
// inform Displays View that monitors changed
|
// inform Displays View that monitors changed
|
||||||
Mixer::manager().view(View::DISPLAYS)->recenter();
|
Mixer::manager().view(View::DISPLAYS)->recenter();
|
||||||
|
|
||||||
@@ -386,7 +393,7 @@ bool Rendering::init()
|
|||||||
output_.init(1, main_.window());
|
output_.init(1, main_.window());
|
||||||
output_.setIcon("images/vimix_256x256.png");
|
output_.setIcon("images/vimix_256x256.png");
|
||||||
// special callbacks for user input in output window
|
// special callbacks for user input in output window
|
||||||
glfwSetMouseButtonCallback( output_.window(), WindowToggleFullscreen);
|
glfwSetMouseButtonCallback( output_.window(), OutputWindowEvent);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Monitors configuration
|
// Monitors configuration
|
||||||
@@ -431,8 +438,8 @@ void Rendering::draw()
|
|||||||
glfwPollEvents();
|
glfwPollEvents();
|
||||||
|
|
||||||
// change windows fullscreen mode if requested
|
// change windows fullscreen mode if requested
|
||||||
main_.toggleFullscreen_();
|
main_.changeFullscreen_();
|
||||||
output_.toggleFullscreen_();
|
output_.changeFullscreen_();
|
||||||
|
|
||||||
// change main window title if requested
|
// change main window title if requested
|
||||||
if (!main_new_title_.empty()) {
|
if (!main_new_title_.empty()) {
|
||||||
@@ -667,7 +674,7 @@ WindowSurface::WindowSurface(Shader *s) : Primitive(s)
|
|||||||
|
|
||||||
|
|
||||||
RenderingWindow::RenderingWindow() : window_(nullptr), master_(nullptr),
|
RenderingWindow::RenderingWindow() : window_(nullptr), master_(nullptr),
|
||||||
index_(-1), dpi_scale_(1.f), textureid_(0), fbo_(0), surface_(nullptr), request_toggle_fullscreen_(false)
|
index_(-1), dpi_scale_(1.f), textureid_(0), fbo_(0), surface_(nullptr), request_change_fullscreen_(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -703,19 +710,15 @@ void RenderingWindow::setIcon(const std::string &resource)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RenderingWindow::isFullscreen ()
|
|
||||||
{
|
|
||||||
// return (glfwGetWindowMonitor(window_) != nullptr);
|
|
||||||
return Settings::application.windows[index_].fullscreen;
|
|
||||||
}
|
|
||||||
|
|
||||||
GLFWmonitor *RenderingWindow::monitor()
|
GLFWmonitor *RenderingWindow::monitor()
|
||||||
{
|
{
|
||||||
// pick at the coordinates given or at pos of window
|
// get monitor at the center of the window
|
||||||
int x = 1, y = 1;
|
int x = 0, y = 0, w = 2, h = 2;
|
||||||
if (window_ != nullptr)
|
if (window_ != nullptr) {
|
||||||
|
glfwGetWindowSize(window_, &w, &h);
|
||||||
glfwGetWindowPos(window_, &x, &y);
|
glfwGetWindowPos(window_, &x, &y);
|
||||||
return Rendering::manager().monitorAt(x, y);
|
}
|
||||||
|
return Rendering::manager().monitorAt(x + w/2, y + h/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderingWindow::setFullscreen_(GLFWmonitor *mo)
|
void RenderingWindow::setFullscreen_(GLFWmonitor *mo)
|
||||||
@@ -723,9 +726,6 @@ void RenderingWindow::setFullscreen_(GLFWmonitor *mo)
|
|||||||
if (window_ == nullptr)
|
if (window_ == nullptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// done request
|
|
||||||
request_toggle_fullscreen_ = false;
|
|
||||||
|
|
||||||
// disable fullscreen mode
|
// disable fullscreen mode
|
||||||
if (mo == nullptr) {
|
if (mo == nullptr) {
|
||||||
// store fullscreen mode
|
// store fullscreen mode
|
||||||
@@ -746,8 +746,9 @@ void RenderingWindow::setFullscreen_(GLFWmonitor *mo)
|
|||||||
|
|
||||||
// set to fullscreen mode
|
// set to fullscreen mode
|
||||||
const GLFWvidmode * mode = glfwGetVideoMode(mo);
|
const GLFWvidmode * mode = glfwGetVideoMode(mo);
|
||||||
glfwSetInputMode( window_, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
|
|
||||||
glfwSetWindowMonitor( window_, mo, 0, 0, mode->width, mode->height, mode->refreshRate);
|
glfwSetWindowMonitor( window_, mo, 0, 0, mode->width, mode->height, mode->refreshRate);
|
||||||
|
|
||||||
|
glfwSetInputMode( window_, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable vsync on output window only (i.e. not 0 if has a master)
|
// Enable vsync on output window only (i.e. not 0 if has a master)
|
||||||
@@ -756,36 +757,63 @@ void RenderingWindow::setFullscreen_(GLFWmonitor *mo)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderingWindow::exitFullscreen()
|
bool RenderingWindow::isFullscreen ()
|
||||||
{
|
{
|
||||||
if (isFullscreen()) {
|
// return (glfwGetWindowMonitor(window_) != nullptr);
|
||||||
// exit fullscreen
|
return Settings::application.windows[index_].fullscreen;
|
||||||
request_toggle_fullscreen_ = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderingWindow::toggleFullscreen()
|
void RenderingWindow::exitFullscreen ()
|
||||||
{
|
{
|
||||||
request_toggle_fullscreen_ = true;
|
// exit fullscreen
|
||||||
|
request_change_fullscreen_ = isFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderingWindow::toggleFullscreen_()
|
void RenderingWindow::toggleFullscreen ()
|
||||||
{
|
{
|
||||||
if (request_toggle_fullscreen_) {
|
request_change_fullscreen_ = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderingWindow::setFullscreen (std::string monitorname)
|
||||||
|
{
|
||||||
|
Settings::application.windows[index_].monitor = monitorname;
|
||||||
|
request_change_fullscreen_ = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RenderingWindow::changeFullscreen_()
|
||||||
|
{
|
||||||
|
// change upon request
|
||||||
|
if (request_change_fullscreen_) {
|
||||||
|
|
||||||
|
// done request
|
||||||
|
request_change_fullscreen_ = false;
|
||||||
|
|
||||||
|
GLFWmonitor *mo = Rendering::manager().monitorNamed( Settings::application.windows[index_].monitor );
|
||||||
|
|
||||||
// if in fullscreen mode
|
// if in fullscreen mode
|
||||||
if (glfwGetWindowMonitor(window_) != nullptr) {
|
if (isFullscreen ()) {
|
||||||
// exit fullscreen
|
|
||||||
setFullscreen_(nullptr);
|
// changing fullscreen monitor
|
||||||
|
if ( glfwGetWindowMonitor(window_) != mo)
|
||||||
|
setFullscreen_(mo);
|
||||||
|
else
|
||||||
|
// exit fullscreen
|
||||||
|
setFullscreen_(nullptr);
|
||||||
}
|
}
|
||||||
// not in fullscreen mode
|
// not in fullscreen mode
|
||||||
else {
|
else {
|
||||||
// enter fullscreen in monitor where the window is
|
// enter fullscreen
|
||||||
setFullscreen_(monitor());
|
setFullscreen_(mo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderingWindow::setCoordinates(glm::ivec4 rect)
|
||||||
|
{
|
||||||
|
glfwSetWindowPos( window_, rect.x, rect.y);
|
||||||
|
glfwSetWindowSize( window_, rect.p, rect.q);
|
||||||
|
}
|
||||||
|
|
||||||
int RenderingWindow::width()
|
int RenderingWindow::width()
|
||||||
{
|
{
|
||||||
return window_attributes_.viewport.x;
|
return window_attributes_.viewport.x;
|
||||||
@@ -886,6 +914,11 @@ bool RenderingWindow::init(int index, GLFWwindow *share)
|
|||||||
|
|
||||||
// if not main window
|
// if not main window
|
||||||
if ( master_ != NULL ) {
|
if ( master_ != NULL ) {
|
||||||
|
|
||||||
|
// special window type
|
||||||
|
glfwSetWindowAttrib( window_, GLFW_DECORATED, GLFW_FALSE);
|
||||||
|
glfwSetWindowAttrib( window_, GLFW_RESIZABLE, GLFW_FALSE);
|
||||||
|
|
||||||
// Enable vsync on output window
|
// Enable vsync on output window
|
||||||
glfwSwapInterval(Settings::application.render.vsync);
|
glfwSwapInterval(Settings::application.render.vsync);
|
||||||
// no need for multisampling
|
// no need for multisampling
|
||||||
@@ -983,19 +1016,28 @@ void RenderingWindow::draw(FrameBuffer *fb)
|
|||||||
// calculate scaling factor of frame buffer inside window
|
// calculate scaling factor of frame buffer inside window
|
||||||
int rx, ry, rw, rh;
|
int rx, ry, rw, rh;
|
||||||
float renderingAspectRatio = fb->aspectRatio();
|
float renderingAspectRatio = fb->aspectRatio();
|
||||||
if (aspectRatio() < renderingAspectRatio) {
|
|
||||||
int nh = (int)( float(window_attributes_.viewport.x) / renderingAspectRatio);
|
if (Settings::application.windows[index_].scaled) {
|
||||||
rx = 0;
|
rx = 0;
|
||||||
ry = (window_attributes_.viewport.y - nh) / 2;
|
|
||||||
rw = window_attributes_.viewport.x;
|
|
||||||
rh = (window_attributes_.viewport.y + nh) / 2;
|
|
||||||
} else {
|
|
||||||
int nw = (int)( float(window_attributes_.viewport.y) * renderingAspectRatio );
|
|
||||||
rx = (window_attributes_.viewport.x - nw) / 2;
|
|
||||||
ry = 0;
|
ry = 0;
|
||||||
rw = (window_attributes_.viewport.x + nw) / 2;
|
rw = window_attributes_.viewport.x;
|
||||||
rh = window_attributes_.viewport.y;
|
rh = window_attributes_.viewport.y;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
if (aspectRatio() < renderingAspectRatio) {
|
||||||
|
int nh = (int)( float(window_attributes_.viewport.x) / renderingAspectRatio);
|
||||||
|
rx = 0;
|
||||||
|
ry = (window_attributes_.viewport.y - nh) / 2;
|
||||||
|
rw = window_attributes_.viewport.x;
|
||||||
|
rh = (window_attributes_.viewport.y + nh) / 2;
|
||||||
|
} else {
|
||||||
|
int nw = (int)( float(window_attributes_.viewport.y) * renderingAspectRatio );
|
||||||
|
rx = (window_attributes_.viewport.x - nw) / 2;
|
||||||
|
ry = 0;
|
||||||
|
rw = (window_attributes_.viewport.x + nw) / 2;
|
||||||
|
rh = window_attributes_.viewport.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// select fbo texture read target
|
// select fbo texture read target
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo_);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo_);
|
||||||
@@ -1020,11 +1062,14 @@ void RenderingWindow::draw(FrameBuffer *fb)
|
|||||||
// calculate scaling factor of frame buffer inside window
|
// calculate scaling factor of frame buffer inside window
|
||||||
float windowAspectRatio = aspectRatio();
|
float windowAspectRatio = aspectRatio();
|
||||||
float renderingAspectRatio = fb->aspectRatio();
|
float renderingAspectRatio = fb->aspectRatio();
|
||||||
glm::vec3 scale;
|
glm::vec3 scale = glm::vec3(1.f, 1.f, 1.f);
|
||||||
if (windowAspectRatio < renderingAspectRatio)
|
|
||||||
scale = glm::vec3(1.f, windowAspectRatio / renderingAspectRatio, 1.f);
|
if (!Settings::application.windows[index_].scaled) {
|
||||||
else
|
if (windowAspectRatio < renderingAspectRatio)
|
||||||
scale = glm::vec3(renderingAspectRatio / windowAspectRatio, 1.f, 1.f);
|
scale = glm::vec3(1.f, windowAspectRatio / renderingAspectRatio, 1.f);
|
||||||
|
else
|
||||||
|
scale = glm::vec3(renderingAspectRatio / windowAspectRatio, 1.f, 1.f);
|
||||||
|
}
|
||||||
|
|
||||||
// make sure previous shader in another glcontext is disabled
|
// make sure previous shader in another glcontext is disabled
|
||||||
ShadingProgram::enduse();
|
ShadingProgram::enduse();
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ class RenderingWindow
|
|||||||
uint fbo_;
|
uint fbo_;
|
||||||
class WindowSurface *surface_;
|
class WindowSurface *surface_;
|
||||||
|
|
||||||
bool request_toggle_fullscreen_;
|
bool request_change_fullscreen_;
|
||||||
void toggleFullscreen_ ();
|
void changeFullscreen_ ();
|
||||||
void setFullscreen_(GLFWmonitor *mo);
|
void setFullscreen_(GLFWmonitor *mo);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -65,9 +65,13 @@ public:
|
|||||||
|
|
||||||
// fullscreen
|
// fullscreen
|
||||||
bool isFullscreen ();
|
bool isFullscreen ();
|
||||||
void exitFullscreen();
|
void exitFullscreen ();
|
||||||
|
void setFullscreen (std::string monitorname);
|
||||||
void toggleFullscreen ();
|
void toggleFullscreen ();
|
||||||
|
|
||||||
|
// set geometry
|
||||||
|
void setCoordinates(glm::ivec4 rect);
|
||||||
|
|
||||||
// get width of rendering area
|
// get width of rendering area
|
||||||
int width();
|
int width();
|
||||||
// get height of rendering area
|
// get height of rendering area
|
||||||
@@ -143,8 +147,7 @@ public:
|
|||||||
glm::vec2 project(glm::vec3 scene_coordinate, glm::mat4 modelview = glm::mat4(1.f), bool to_framebuffer = true);
|
glm::vec2 project(glm::vec3 scene_coordinate, glm::mat4 modelview = glm::mat4(1.f), bool to_framebuffer = true);
|
||||||
|
|
||||||
// get hold on the monitors
|
// get hold on the monitors
|
||||||
void monitorsUpdate();
|
inline std::map<std::string, glm::ivec4> monitors() { return monitors_geometry_; }
|
||||||
inline std::map<std::string, glm::ivec4> monitors() { return monitors_; }
|
|
||||||
// get which monitor contains this point
|
// get which monitor contains this point
|
||||||
GLFWmonitor *monitorAt(int x, int y);
|
GLFWmonitor *monitorAt(int x, int y);
|
||||||
// get which monitor has this name
|
// get which monitor has this name
|
||||||
@@ -174,7 +177,7 @@ private:
|
|||||||
RenderingWindow output_;
|
RenderingWindow output_;
|
||||||
|
|
||||||
// monitors
|
// monitors
|
||||||
std::map<std::string, glm::ivec4> monitors_;
|
std::map<std::string, glm::ivec4> monitors_geometry_;
|
||||||
static void MonitorConnect(GLFWmonitor* monitor, int event);
|
static void MonitorConnect(GLFWmonitor* monitor, int event);
|
||||||
|
|
||||||
// file drop callback
|
// file drop callback
|
||||||
|
|||||||
@@ -105,8 +105,9 @@ void Settings::Save(uint64_t runtime)
|
|||||||
window->SetAttribute("x", w.x);
|
window->SetAttribute("x", w.x);
|
||||||
window->SetAttribute("y", w.y);
|
window->SetAttribute("y", w.y);
|
||||||
window->SetAttribute("w", w.w);
|
window->SetAttribute("w", w.w);
|
||||||
window->SetAttribute("h", w.h);
|
window->SetAttribute("h", w.h);
|
||||||
window->SetAttribute("f", w.fullscreen);
|
window->SetAttribute("f", w.fullscreen);
|
||||||
|
window->SetAttribute("s", w.scaled);
|
||||||
window->SetAttribute("m", w.monitor.c_str());
|
window->SetAttribute("m", w.monitor.c_str());
|
||||||
windowsNode->InsertEndChild(window);
|
windowsNode->InsertEndChild(window);
|
||||||
}
|
}
|
||||||
@@ -502,6 +503,7 @@ void Settings::Load()
|
|||||||
windowNode->QueryIntAttribute("w", &w.w);
|
windowNode->QueryIntAttribute("w", &w.w);
|
||||||
windowNode->QueryIntAttribute("h", &w.h);
|
windowNode->QueryIntAttribute("h", &w.h);
|
||||||
windowNode->QueryBoolAttribute("f", &w.fullscreen);
|
windowNode->QueryBoolAttribute("f", &w.fullscreen);
|
||||||
|
windowNode->QueryBoolAttribute("s", &w.scaled);
|
||||||
const char *text = windowNode->Attribute("m");
|
const char *text = windowNode->Attribute("m");
|
||||||
if (text)
|
if (text)
|
||||||
w.monitor = std::string(text);
|
w.monitor = std::string(text);
|
||||||
|
|||||||
@@ -60,9 +60,10 @@ struct WindowConfig
|
|||||||
std::string name;
|
std::string name;
|
||||||
int x,y,w,h;
|
int x,y,w,h;
|
||||||
bool fullscreen;
|
bool fullscreen;
|
||||||
|
bool scaled;
|
||||||
std::string monitor;
|
std::string monitor;
|
||||||
|
|
||||||
WindowConfig() : name(""), x(15), y(15), w(1280), h(720), fullscreen(false), monitor("") { }
|
WindowConfig() : name(""), x(15), y(15), w(1280), h(720), fullscreen(false), scaled(false), monitor("") { }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -336,6 +337,7 @@ struct Application
|
|||||||
windows[0].w = 1600;
|
windows[0].w = 1600;
|
||||||
windows[0].h = 900;
|
windows[0].h = 900;
|
||||||
windows[1].name = "Output " APP_TITLE;
|
windows[1].name = "Output " APP_TITLE;
|
||||||
|
windows[2].name = "Fullscreen " APP_TITLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -871,7 +871,7 @@ void TextureView::draw()
|
|||||||
}
|
}
|
||||||
if (ImGui::BeginPopup("AppearanceSourceContextMenu")) {
|
if (ImGui::BeginPopup("AppearanceSourceContextMenu")) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(COLOR_APPEARANCE_SOURCE, 1.f));
|
ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(COLOR_APPEARANCE_SOURCE, 1.f));
|
||||||
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(0.36f, 0.36f, 0.36f, 0.44f));
|
ImGui::PushStyleColor(ImGuiCol_HeaderHovered, ImVec4(COLOR_MENU_HOVERED, 0.5f));
|
||||||
Source *s = Mixer::manager().currentSource();
|
Source *s = Mixer::manager().currentSource();
|
||||||
if (s != nullptr) {
|
if (s != nullptr) {
|
||||||
|
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
#define COLOR_SLIDER_CIRCLE 0.11f, 0.11f, 0.11f
|
#define COLOR_SLIDER_CIRCLE 0.11f, 0.11f, 0.11f
|
||||||
#define COLOR_STASH_CIRCLE 0.06f, 0.06f, 0.06f
|
#define COLOR_STASH_CIRCLE 0.06f, 0.06f, 0.06f
|
||||||
#define COLOR_MONITOR 0.2f, 0.85f, 0.85f
|
#define COLOR_MONITOR 0.2f, 0.85f, 0.85f
|
||||||
|
#define COLOR_MENU_HOVERED 0.3f, 0.3f, 0.3f
|
||||||
|
|
||||||
#define OSC_PORT_RECV_DEFAULT 7000
|
#define OSC_PORT_RECV_DEFAULT 7000
|
||||||
#define OSC_PORT_SEND_DEFAULT 7001
|
#define OSC_PORT_SEND_DEFAULT 7001
|
||||||
|
|||||||
Reference in New Issue
Block a user