802
812
coordsTransformed[GLVector::y]);
816
project (float objx, float objy, float objz,
817
const float modelview[16], const float projection[16],
818
const GLint viewport[4],
819
float *winx, float *winy, float *winz)
830
for (i = 0; i < 4; i++) {
832
in[0] * modelview[i] +
833
in[1] * modelview[4 + i] +
834
in[2] * modelview[8 + i] +
835
in[3] * modelview[12 + i];
838
for (i = 0; i < 4; i++) {
840
out[0] * projection[i] +
841
out[1] * projection[4 + i] +
842
out[2] * projection[8 + i] +
843
out[3] * projection[12 + i];
852
/* Map x, y and z to range 0-1 */
853
in[0] = in[0] * 0.5 + 0.5;
854
in[1] = in[1] * 0.5 + 0.5;
855
in[2] = in[2] * 0.5 + 0.5;
857
/* Map x,y to viewport */
858
in[0] = in[0] * viewport[2] + viewport[0];
859
in[1] = in[1] * viewport[3] + viewport[1];
805
867
/// Either points or objects should be non-0.
807
869
AnimWindow::expandBBWithPoints3DTransform (CompOutput &output,
2444
2507
return gScreen->glPaintOutput (attrib, matrix, region, output, mask);
2510
AnimEffectUsedFor AnimEffectUsedFor::all ()
2512
AnimEffectUsedFor usedFor;
2513
usedFor.open = usedFor.close = usedFor.minimize =
2514
usedFor.shade = usedFor.unMinimize = usedFor.focus = true;
2518
AnimEffectUsedFor AnimEffectUsedFor::none ()
2520
AnimEffectUsedFor usedFor;
2521
usedFor.open = usedFor.close = usedFor.minimize =
2522
usedFor.shade = usedFor.unMinimize = usedFor.focus = true;
2526
AnimEffectUsedFor& AnimEffectUsedFor::exclude (AnimEvent event)
2529
case AnimEventOpen: open = false; break;
2530
case AnimEventClose: close = false; break;
2531
case AnimEventMinimize: minimize = false; break;
2532
case AnimEventShade: shade = false; break;
2533
case AnimEventUnMinimize: unMinimize = false; break;
2534
case AnimEventFocus: focus = false; break;
2540
AnimEffectUsedFor& AnimEffectUsedFor::include (AnimEvent event)
2543
case AnimEventOpen: open = true; break;
2544
case AnimEventClose: close = true; break;
2545
case AnimEventMinimize: minimize = true; break;
2546
case AnimEventShade: shade = true; break;
2547
case AnimEventUnMinimize: unMinimize = true; break;
2548
case AnimEventFocus: focus = true; break;
2447
2554
AnimEffectInfo::AnimEffectInfo (const char *name,
2448
bool usedO, bool usedC, bool usedM,
2449
bool usedS, bool usedF,
2555
AnimEffectUsedFor usedFor,
2450
2556
CreateAnimFunc create,
2451
2557
bool isRestackAnim) :
2453
2559
create (create),
2454
2560
isRestackAnim (isRestackAnim)
2456
usedForEvents[AnimEventOpen] = usedO;
2457
usedForEvents[AnimEventClose] = usedC;
2458
usedForEvents[AnimEventMinimize] = usedM;
2459
usedForEvents[AnimEventShade] = usedS;
2460
usedForEvents[AnimEventFocus] = usedF;
2562
usedForEvents[AnimEventOpen] = usedFor.open;
2563
usedForEvents[AnimEventClose] = usedFor.close;
2564
usedForEvents[AnimEventMinimize] = usedFor.minimize;
2565
usedForEvents[AnimEventShade] = usedFor.shade;
2566
usedForEvents[AnimEventUnMinimize] = usedFor.unMinimize;
2567
usedForEvents[AnimEventFocus] = usedFor.focus;
2577
2684
PrivateAnimScreen::initAnimationList ()
2580
2688
animEffects[i++] = AnimEffectNone =
2581
2689
new AnimEffectInfo ("animation:None",
2582
true, true, true, true, true, 0);
2690
AnimEffectUsedFor::all(),
2583
2693
animEffects[i++] = AnimEffectRandom =
2584
2694
new AnimEffectInfo ("animation:Random",
2585
true, true, true, true, false, 0);
2695
AnimEffectUsedFor::all().exclude(AnimEventFocus),
2586
2698
animEffects[i++] = AnimEffectCurvedFold =
2587
2699
new AnimEffectInfo ("animation:Curved Fold",
2588
true, true, true, true, false,
2700
AnimEffectUsedFor::all().exclude(AnimEventFocus),
2589
2701
&createAnimation<CurvedFoldAnim>);
2590
2703
animEffects[i++] = AnimEffectDodge =
2591
new AnimEffectInfo ("animation:Dodge",
2592
false, false, false, false, true,
2704
new AnimEffectInfo ("animation:Dodge",
2705
AnimEffectUsedFor::none().include(AnimEventFocus),
2593
2706
&createAnimation<DodgeAnim>,
2595
2709
animEffects[i++] = AnimEffectDream =
2596
new AnimEffectInfo ("animation:Dream",
2597
true, true, true, false, false,
2710
new AnimEffectInfo ("animation:Dream",
2711
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2598
2712
&createAnimation<DreamAnim>);
2599
2714
animEffects[i++] = AnimEffectFade =
2600
2715
new AnimEffectInfo ("animation:Fade",
2601
true, true, true, false, false,
2716
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2602
2717
&createAnimation<FadeAnim>);
2603
2719
animEffects[i++] = AnimEffectFocusFade =
2604
new AnimEffectInfo ("animation:Focus Fade",
2605
false, false, false, false, true,
2720
new AnimEffectInfo ("animation:Focus Fade",
2721
AnimEffectUsedFor::none().include(AnimEventFocus),
2606
2722
&createAnimation<FocusFadeAnim>,
2608
2725
animEffects[i++] = AnimEffectGlide1 =
2609
2726
new AnimEffectInfo ("animation:Glide 1",
2610
true, true, true, false, false,
2727
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2611
2728
&createAnimation<GlideAnim>);
2612
2730
animEffects[i++] = AnimEffectGlide2 =
2613
2731
new AnimEffectInfo ("animation:Glide 2",
2614
true, true, true, false, false,
2732
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2615
2733
&createAnimation<Glide2Anim>);
2616
2735
animEffects[i++] = AnimEffectHorizontalFolds =
2617
2736
new AnimEffectInfo ("animation:Horizontal Folds",
2618
true, true, true, true, false,
2737
AnimEffectUsedFor::all().exclude(AnimEventFocus),
2619
2738
&createAnimation<HorizontalFoldsAnim>);
2620
2740
animEffects[i++] = AnimEffectMagicLamp =
2621
2741
new AnimEffectInfo ("animation:Magic Lamp",
2622
true, true, true, false, false,
2742
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2623
2743
&createAnimation<MagicLampAnim>);
2624
2745
animEffects[i++] = AnimEffectMagicLampWavy =
2625
2746
new AnimEffectInfo ("animation:Magic Lamp Wavy",
2626
true, true, true, false, false,
2747
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2627
2748
&createAnimation<MagicLampWavyAnim>);
2628
2750
animEffects[i++] = AnimEffectRollUp =
2629
2751
new AnimEffectInfo ("animation:Roll Up",
2630
false, false, false, true, false,
2752
AnimEffectUsedFor::none().include(AnimEventShade),
2631
2753
&createAnimation<RollUpAnim>);
2632
2755
animEffects[i++] = AnimEffectSidekick =
2633
2756
new AnimEffectInfo ("animation:Sidekick",
2634
true, true, true, false, false,
2757
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2635
2758
&createAnimation<SidekickAnim>);
2636
2760
animEffects[i++] = AnimEffectWave =
2637
2761
new AnimEffectInfo ("animation:Wave",
2638
true, true, true, false, true,
2762
AnimEffectUsedFor::all().exclude(AnimEventShade),
2639
2763
&createAnimation<WaveAnim>);
2640
2765
animEffects[i++] = AnimEffectZoom =
2641
new AnimEffectInfo ("animation:Zoom",
2642
true, true, true, false, false,
2766
new AnimEffectInfo ("animation:Zoom",
2767
AnimEffectUsedFor::all().exclude(AnimEventFocus).exclude(AnimEventShade),
2643
2768
&createAnimation<ZoomAnim>);
2645
2770
animExtensionPluginInfo.effectOptions = &getOptions ();