Updated ripple effect.
authorKent Sutherland <ksuther@ithinksw.com>
Mon, 13 Feb 2006 01:31:59 +0000 (01:31 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Mon, 13 Feb 2006 01:31:59 +0000 (01:31 +0000)
English.lproj/ITKeyCodes.plist
ITCoreImageWindowEffect.h
ITCoreImageWindowEffect.m

index 2693c50..5c799f0 100644 (file)
-{
-       0 = "A";
-       1 = "S";
-       2 = "D";
-       3 = "F";
-       4 = "H";
-       5 = "G";
-       6 = "Z";
-       7 = "X";
-       8 = "C";
-       9 = "V";
-       10 = "$";
-       11 = "B";
-       12 = "Q";
-       13 = "W";
-       14 = "E";
-       15 = "R";
-       16 = "Y";
-       17 = "T";
-       18 = "1";
-       19 = "2";
-       20 = "3";
-       21 = "4";
-       22 = "6";
-       23 = "5";
-       24 = "=";
-       25 = "9";
-       26 = "7";
-       27 = "-";
-       28 = "8";
-       29 = "0";
-       30 = "\]";
-       31 = "O";
-       32 = "U";
-       33 = "\[";
-       34 = "I";
-       35 = "P";
-       36 = "Return";
-       37 = "L";
-       38 = "J";
-       39 = "\'";
-       40 = "K";
-       41 = ";";
-       42 = "\\";
-       43 = ",";
-       44 = "\/";
-       45 = "N";
-       46 = "M";
-       47 = ".";
-       48 = "Tab";
-       49 = "Space";
-       50 = "\`";
-       51 = "Delete";
-       53 = "ESC";
-       55 = "Command";
-       56 = "Shift";
-       57 = "Caps Lock";
-       58 = "Option";
-       59 = "Control";
-       65 = "Pad .";
-       67 = "Pad *";
-       69 = "Pad +";
-       71 = "Clear";
-       75 = "Pad /";
-       76 = "Pad Enter";
-       78 = "Pad -";
-       81 = "Pad =";
-       82 = "Pad 0";
-       83 = "Pad 1";
-       84 = "Pad 2";
-       85 = "Pad 3";
-       86 = "Pad 4";
-       87 = "Pad 5";
-       88 = "Pad 6";
-       89 = "Pad 7";
-       91 = "Pad 8";
-       92 = "Pad 9";
-       96 = "F5";
-       97 = "F6";
-       98 = "F7";
-       99 = "F3";
-       100 = "F8";
-       101 = "F9";
-       103 = "F11";
-       105 = "F13";
-       107 = "F14";
-       109 = "F10";
-       111 = "F12";
-       113 = "F15";
-       114 = "Ins";
-       115 = "Home";
-       116 = "Page Up";
-       117 = "Del";
-       118 = "F4";
-       119 = "End";
-       120 = "F2";
-       121 = "Page Down";
-       122 = "F1";
-       123 = "Left Arrow";
-       124 = "Right Arrow";
-       125 = "Down Arrow";
-       126 = "Up Arrow";
-}
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>0</key>
+       <string>A</string>
+       <key>1</key>
+       <string>S</string>
+       <key>10</key>
+       <string>$</string>
+       <key>100</key>
+       <string>F8</string>
+       <key>101</key>
+       <string>F9</string>
+       <key>103</key>
+       <string>F11</string>
+       <key>105</key>
+       <string>F13</string>
+       <key>106</key>
+       <string>F16</string>
+       <key>107</key>
+       <string>F14</string>
+       <key>109</key>
+       <string>F10</string>
+       <key>11</key>
+       <string>B</string>
+       <key>111</key>
+       <string>F12</string>
+       <key>113</key>
+       <string>F15</string>
+       <key>114</key>
+       <string>Ins</string>
+       <key>115</key>
+       <string>Home</string>
+       <key>116</key>
+       <string>Page Up</string>
+       <key>117</key>
+       <string>Del</string>
+       <key>118</key>
+       <string>F4</string>
+       <key>119</key>
+       <string>End</string>
+       <key>12</key>
+       <string>Q</string>
+       <key>120</key>
+       <string>F2</string>
+       <key>121</key>
+       <string>Page Down</string>
+       <key>122</key>
+       <string>F1</string>
+       <key>123</key>
+       <string>Left Arrow</string>
+       <key>124</key>
+       <string>Right Arrow</string>
+       <key>125</key>
+       <string>Down Arrow</string>
+       <key>126</key>
+       <string>Up Arrow</string>
+       <key>13</key>
+       <string>W</string>
+       <key>14</key>
+       <string>E</string>
+       <key>15</key>
+       <string>R</string>
+       <key>16</key>
+       <string>Y</string>
+       <key>17</key>
+       <string>T</string>
+       <key>18</key>
+       <string>1</string>
+       <key>19</key>
+       <string>2</string>
+       <key>2</key>
+       <string>D</string>
+       <key>20</key>
+       <string>3</string>
+       <key>21</key>
+       <string>4</string>
+       <key>22</key>
+       <string>6</string>
+       <key>23</key>
+       <string>5</string>
+       <key>24</key>
+       <string>=</string>
+       <key>25</key>
+       <string>9</string>
+       <key>26</key>
+       <string>7</string>
+       <key>27</key>
+       <string>-</string>
+       <key>28</key>
+       <string>8</string>
+       <key>29</key>
+       <string>0</string>
+       <key>3</key>
+       <string>F</string>
+       <key>30</key>
+       <string>]</string>
+       <key>31</key>
+       <string>O</string>
+       <key>32</key>
+       <string>U</string>
+       <key>33</key>
+       <string>[</string>
+       <key>34</key>
+       <string>I</string>
+       <key>35</key>
+       <string>P</string>
+       <key>36</key>
+       <string>Return</string>
+       <key>37</key>
+       <string>L</string>
+       <key>38</key>
+       <string>J</string>
+       <key>39</key>
+       <string>'</string>
+       <key>4</key>
+       <string>H</string>
+       <key>40</key>
+       <string>K</string>
+       <key>41</key>
+       <string>;</string>
+       <key>42</key>
+       <string>\</string>
+       <key>43</key>
+       <string>,</string>
+       <key>44</key>
+       <string>/</string>
+       <key>45</key>
+       <string>N</string>
+       <key>46</key>
+       <string>M</string>
+       <key>47</key>
+       <string>.</string>
+       <key>48</key>
+       <string>Tab</string>
+       <key>49</key>
+       <string>Space</string>
+       <key>5</key>
+       <string>G</string>
+       <key>50</key>
+       <string>`</string>
+       <key>51</key>
+       <string>Delete</string>
+       <key>53</key>
+       <string>ESC</string>
+       <key>55</key>
+       <string>Command</string>
+       <key>56</key>
+       <string>Shift</string>
+       <key>57</key>
+       <string>Caps Lock</string>
+       <key>58</key>
+       <string>Option</string>
+       <key>59</key>
+       <string>Control</string>
+       <key>6</key>
+       <string>Z</string>
+       <key>65</key>
+       <string>Pad .</string>
+       <key>67</key>
+       <string>Pad *</string>
+       <key>69</key>
+       <string>Pad +</string>
+       <key>7</key>
+       <string>X</string>
+       <key>71</key>
+       <string>Clear</string>
+       <key>75</key>
+       <string>Pad /</string>
+       <key>76</key>
+       <string>Pad Enter</string>
+       <key>78</key>
+       <string>Pad -</string>
+       <key>8</key>
+       <string>C</string>
+       <key>81</key>
+       <string>Pad =</string>
+       <key>82</key>
+       <string>Pad 0</string>
+       <key>83</key>
+       <string>Pad 1</string>
+       <key>84</key>
+       <string>Pad 2</string>
+       <key>85</key>
+       <string>Pad 3</string>
+       <key>86</key>
+       <string>Pad 4</string>
+       <key>87</key>
+       <string>Pad 5</string>
+       <key>88</key>
+       <string>Pad 6</string>
+       <key>89</key>
+       <string>Pad 7</string>
+       <key>9</key>
+       <string>V</string>
+       <key>91</key>
+       <string>Pad 8</string>
+       <key>92</key>
+       <string>Pad 9</string>
+       <key>96</key>
+       <string>F5</string>
+       <key>97</key>
+       <string>F6</string>
+       <key>98</key>
+       <string>F7</string>
+       <key>99</key>
+       <string>F3</string>
+</dict>
+</plist>
index 043c4f4..d0cc842 100644 (file)
@@ -36,6 +36,7 @@
        NSWindow *_effectWindow;
        CIFilter *_effectFilter;
        CICGSFilter *_windowFilter;
+       BOOL _ripple;
 }
 
 @end
\ No newline at end of file
index 1c751af..9fd49aa 100644 (file)
        NSRect rippleRect = [_window frame];
        NSRect screenRect = [[_window screen] frame];
        
+       _ripple = YES;
+       
     rippleRect.origin.y = - (NSMaxY(rippleRect) - screenRect.size.height);
        
-       _effectWindow = [[NSWindow alloc] initWithContentRect:NSInsetRect([_window frame], -200, -200) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
+       _effectWindow = [[NSWindow alloc] initWithContentRect:_ripple ? NSInsetRect([_window frame], -200, -200) : [_window frame] styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
        [_effectWindow setBackgroundColor:[NSColor clearColor]];
        [_effectWindow setAlphaValue:1.0];
        [_effectWindow setOpaque:NO];
        [_effectWindow orderFrontRegardless];
     [_window orderWindow:NSWindowAbove relativeTo:[_effectWindow windowNumber]];
        
-       _effectFilter = [[CIFilter filterWithName:@"CIShapedWaterRipple"] retain];
-    [_effectFilter setDefaults];
-    [_effectFilter setValue:[NSNumber numberWithFloat:50.0] forKey:@"inputCornerRadius"];
-    [_effectFilter setValue:[CIVector vectorWithX:rippleRect.origin.x Y:rippleRect.origin.y] forKey:@"inputPoint0"];
-    [_effectFilter setValue:[CIVector vectorWithX:(rippleRect.origin.x + rippleRect.size.width) Y:(rippleRect.origin.y + rippleRect.size.height)] forKey:@"inputPoint1"];
-    [_effectFilter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputPhase"];
+       if (_ripple) {
+               _effectFilter = [[CIFilter filterWithName:@"CIShapedWaterRipple"] retain];
+               [_effectFilter setDefaults];
+               [_effectFilter setValue:[NSNumber numberWithFloat:50.0] forKey:@"inputCornerRadius"];
+               [_effectFilter setValue:[CIVector vectorWithX:rippleRect.origin.x Y:rippleRect.origin.y] forKey:@"inputPoint0"];
+               [_effectFilter setValue:[CIVector vectorWithX:(rippleRect.origin.x + rippleRect.size.width) Y:(rippleRect.origin.y + rippleRect.size.height)] forKey:@"inputPoint1"];
+               [_effectFilter setValue:[NSNumber numberWithFloat:0.0] forKey:@"inputPhase"];
+       } else {
+               _effectFilter = [[CIFilter filterWithName:@"CIZoomBlur"] retain];
+               [_effectFilter setDefaults];
+               [_effectFilter setValue:[CIVector vectorWithX:(rippleRect.origin.x + rippleRect.size.width / 2) Y:(rippleRect.origin.y + rippleRect.size.height / 2)] forKey:@"inputCenter"];
+       }
        
        _windowFilter = [[CICGSFilter filterWithFilter:_effectFilter connectionID:[NSApp contextID]] retain];
        [_windowFilter addToWindow:(CGSWindowID)[_effectWindow windowNumber] flags:1];
        
        while (time < (startTime + 2.5) && (time >= startTime)) {
                oldFilter = _windowFilter;
-               [_effectFilter setValue:[NSNumber numberWithFloat:160*(time - startTime)] forKey:@"inputPhase"];
+               if (_ripple) {
+                       [_effectFilter setValue:[NSNumber numberWithFloat:160*(time - startTime)] forKey:@"inputPhase"];
+               } else {
+                       [_effectFilter setValue:[NSNumber numberWithFloat:5 * (time - startTime)] forKey:@"inputAmount"];
+               }
         _windowFilter = [[CICGSFilter filterWithFilter:_effectFilter connectionID:[NSApp contextID]] retain];
         [_windowFilter addToWindow:windowNumber flags:1];
                [oldFilter removeFromWindow:windowNumber];