├── .gitignore
├── .gitmodules
├── Euphoria.xcodeproj
├── project.pbxproj
└── project.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ └── Euphoria.xccheckout
│ └── xcuserdata
│ └── stephane.xcuserdatad
│ └── UserInterfaceState.xcuserstate
└── Euphoria
├── GPL
├── Euphoria.cpp
├── Euphoria.h
└── texture.h
├── Info.plist
├── RSSEuphoriaConfigurationWindowController.h
├── RSSEuphoriaConfigurationWindowController.m
├── RSSEuphoriaSettings.h
├── RSSEuphoriaSettings.m
├── RSSEuphoriaView.h
├── RSSEuphoriaView.mm
├── de.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
├── en.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
├── es.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
├── fr.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
├── images
├── badmath_thumbnail.png
├── badmath_thumbnail@2x.png
├── cubism_thumbnail.png
├── cubism_thumbnail@2x.png
├── echo_thumbnail.png
├── echo_thumbnail@2x.png
├── grid_thumbnail.png
├── grid_thumbnail@2x.png
├── kaleidoscope_thumbnail.png
├── kaleidoscope_thumbnail@2x.png
├── mtheory_thumbnail.png
├── mtheory_thumbnail@2x.png
├── nowhere_thumbnail.png
├── nowhere_thumbnail@2x.png
├── regular_thumbnail.png
├── regular_thumbnail@2x.png
├── thumbnail.png
├── thumbnail@2x.png
├── uhftem_thumbnail.png
└── uhftem_thumbnail@2x.png
├── it.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
├── ja.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
└── sv.lproj
├── Localized.strings
└── RSSEuphoriaConfigurationWindowController.xib
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | Euphoria.xcodeproj/project.xcworkspace/xcuserdata/stephane.xcuserdatad/UserInterfaceState.xcuserstate
3 |
4 | Euphoria.xcodeproj/xcuserdata/stephane.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
5 |
6 | Euphoria.xcodeproj/xcuserdata/stephane.xcuserdatad/xcschemes/xcschememanagement.plist
7 |
8 | Euphoria.xcodeproj/xcuserdata/stephane.xcuserdatad/xcschemes/Euphoria.xcscheme
9 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "Euphoria/rsscommon"]
2 | path = Euphoria/rsscommon
3 | url = https://github.com/packagesdev/rsscommon
4 |
--------------------------------------------------------------------------------
/Euphoria.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Euphoria.xcodeproj/project.xcworkspace/xcshareddata/Euphoria.xccheckout:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDESourceControlProjectFavoriteDictionaryKey
6 |
7 | IDESourceControlProjectIdentifier
8 | 1B908474-F624-46DF-AC18-B033C9092348
9 | IDESourceControlProjectName
10 | Euphoria
11 | IDESourceControlProjectOriginsDictionary
12 |
13 | 51F150AFDC369B79AFC620C0E9E34ADCDECB9665
14 | https://github.com/packagesdev/rsscommon
15 | FB7FBAF09BB94089755F9E5DEFDC72B3FDABEC28
16 | https://github.com/packagesdev/euphoria.git
17 |
18 | IDESourceControlProjectPath
19 | Euphoria.xcodeproj
20 | IDESourceControlProjectRelativeInstallPathDictionary
21 |
22 | 51F150AFDC369B79AFC620C0E9E34ADCDECB9665
23 | ../..Euphoria/rsscommon
24 | FB7FBAF09BB94089755F9E5DEFDC72B3FDABEC28
25 | ../..
26 |
27 | IDESourceControlProjectURL
28 | https://github.com/packagesdev/euphoria.git
29 | IDESourceControlProjectVersion
30 | 111
31 | IDESourceControlProjectWCCIdentifier
32 | FB7FBAF09BB94089755F9E5DEFDC72B3FDABEC28
33 | IDESourceControlProjectWCConfigurations
34 |
35 |
36 | IDESourceControlRepositoryExtensionIdentifierKey
37 | public.vcs.git
38 | IDESourceControlWCCIdentifierKey
39 | FB7FBAF09BB94089755F9E5DEFDC72B3FDABEC28
40 | IDESourceControlWCCName
41 | euphoria
42 |
43 |
44 | IDESourceControlRepositoryExtensionIdentifierKey
45 | public.vcs.git
46 | IDESourceControlWCCIdentifierKey
47 | 51F150AFDC369B79AFC620C0E9E34ADCDECB9665
48 | IDESourceControlWCCName
49 | rsscommon
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Euphoria.xcodeproj/project.xcworkspace/xcuserdata/stephane.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria.xcodeproj/project.xcworkspace/xcuserdata/stephane.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/Euphoria/GPL/Euphoria.cpp:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2000-2015 Terence M. Welsh
3 | *
4 | * This file is part of Euphoria.
5 | *
6 | * Euphoria is free software; you can redistribute it and/or modify
7 | * it under the terms of the GNU General Public License version 2 as
8 | * published by the Free Software Foundation.
9 | *
10 | * Euphoria 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. See the
13 | * GNU General Public License for more details.
14 | *
15 | * You should have received a copy of the GNU General Public License
16 | * along with this program; if not, write to the Free Software
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 | */
19 |
20 |
21 | // Euphoria screensaver
22 |
23 | #if defined(__GNUC__)
24 | #if defined(__GNUC_PATCHLEVEL__)
25 | #define __GNUC_VERSION__ (__GNUC__ * 10000 \
26 | + __GNUC_MINOR__ * 100 \
27 | + __GNUC_PATCHLEVEL__)
28 | #else
29 | #define __GNUC_VERSION__ (__GNUC__ * 10000 \
30 | + __GNUC_MINOR__ * 100)
31 | #endif
32 |
33 | #if __GNUC_VERSION__ < 40000
34 |
35 | #define cosf cos
36 | #define acosf acos
37 | #define sinf sin
38 |
39 | #endif
40 |
41 | #endif
42 |
43 | #include "Euphoria.h"
44 |
45 |
46 | #include
47 | #include
48 | #include
49 | #include "rsMath.h"
50 | #include "rgbhsl.h"
51 | #include "texture.h"
52 |
53 | #include
54 | #include
55 |
56 | #define PIx2 6.28318530718f
57 |
58 | scene::scene()
59 | {
60 | srand((unsigned)time(NULL));
61 | rand(); rand(); rand(); rand(); rand();
62 | rand(); rand(); rand(); rand(); rand();
63 | rand(); rand(); rand(); rand(); rand();
64 | rand(); rand(); rand(); rand(); rand();
65 |
66 | _lastRefresh=0;
67 |
68 | feedbackmap=NULL;
69 | wisps=NULL;
70 | backgroundLayers=NULL;
71 |
72 |
73 | textureID=0;
74 | feedbacktex=0;
75 | }
76 |
77 | scene::~scene()
78 | {
79 | if (feedbackmap!=NULL)
80 | {
81 | delete feedbackmap;
82 | feedbackmap=NULL;
83 | }
84 |
85 | if (wisps!=NULL)
86 | {
87 | delete[] wisps;
88 | wisps=NULL;
89 | }
90 |
91 | if (backgroundLayers!=NULL)
92 | {
93 | delete[] backgroundLayers;
94 | backgroundLayers=NULL;
95 | }
96 | }
97 |
98 | #pragma mark -
99 |
100 | void scene::resize(int inWidth,int inHeight)
101 | {
102 | viewport[0] = 0;
103 | viewport[1] = 0;
104 | viewport[2] = inWidth;
105 | viewport[3] = inHeight;
106 |
107 | glViewport(0,0, inWidth,inHeight);
108 | aspectRatio = inWidth / inHeight;
109 |
110 | // setup regular drawing area just in case feedback isn't used
111 | glMatrixMode(GL_PROJECTION);
112 | glLoadIdentity();
113 | gluPerspective(20.0, aspectRatio, 0.01, 20);
114 | glMatrixMode(GL_MODELVIEW);
115 | glLoadIdentity();
116 | glTranslatef(0.0, 0.0, -5.0);
117 |
118 | glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
119 | glClear(GL_COLOR_BUFFER_BIT);
120 | }
121 |
122 | void scene::create()
123 | {
124 |
125 | fr[0] = 0.0f;
126 | fr[1] = 0.0f;
127 | fr[2] = 0.0f;
128 | fr[3] = 0.0f;
129 |
130 | lr[0] = 0.0f;
131 | lr[1] = 0.0f;
132 | lr[2] = 0.0f;
133 |
134 | glEnable(GL_BLEND);
135 | glBlendFunc(GL_ONE, GL_ONE);
136 | glLineWidth(2.0f);
137 | // Commented out because smooth lines and textures don't mix on my TNT.
138 | // It's like it rendering in software mode
139 | //glEnable(GL_LINE_SMOOTH);
140 | //glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
141 |
142 | if (glIsTexture(textureID))
143 | {
144 | glDeleteTextures(1, (GLuint *) &textureID);
145 | textureID=0;
146 | }
147 |
148 | if (textureType || feedback)
149 | {
150 | glEnable(GL_TEXTURE_2D);
151 | }
152 | else
153 | {
154 | glDisable(GL_TEXTURE_2D);
155 | glBindTexture(GL_TEXTURE_2D, 0);
156 | }
157 |
158 | if(textureType>0)
159 | {
160 | int whichtex = textureType;
161 | if(whichtex == 4) // random texture
162 | whichtex = rsRandi(3) + 1;
163 |
164 | glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
165 | // Initialize texture
166 | glGenTextures(1, (GLuint *) &textureID);
167 | glBindTexture(GL_TEXTURE_2D, textureID);
168 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
169 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
170 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
171 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
172 |
173 | switch(whichtex)
174 | {
175 | case 1:
176 | gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEXSIZE, TEXSIZE, GL_LUMINANCE, GL_UNSIGNED_BYTE, plasmamap);
177 | break;
178 | case 2:
179 | gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEXSIZE, TEXSIZE, GL_LUMINANCE, GL_UNSIGNED_BYTE, stringymap);
180 | break;
181 | case 3:
182 | gluBuild2DMipmaps(GL_TEXTURE_2D, 1, TEXSIZE, TEXSIZE, GL_LUMINANCE, GL_UNSIGNED_BYTE, linesmap);
183 | }
184 | }
185 |
186 |
187 |
188 | if (feedback>0)
189 | {
190 | feedbacktexsize = int(pow(2, feedbacksize));
191 |
192 | while(feedbacktexsize > viewport[2] || feedbacktexsize > viewport[3])
193 | {
194 | feedbacktexsize=feedbacktexsize/2;
195 | }
196 |
197 | // feedback texture setup
198 |
199 | feedbackmap = new unsigned char[feedbacktexsize*feedbacktexsize*3];
200 |
201 | if (glIsTexture(feedbacktex))
202 | {
203 | glDeleteTextures(1, (GLuint *) &feedbacktex);
204 | feedbacktex=0;
205 | }
206 |
207 | glGenTextures(1, (GLuint *) &feedbacktex);
208 | glBindTexture(GL_TEXTURE_2D, feedbacktex);
209 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
210 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
211 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
212 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
213 | glTexImage2D(GL_TEXTURE_2D, 0, 3, feedbacktexsize, feedbacktexsize, 0, GL_RGB, GL_UNSIGNED_BYTE, feedbackmap);
214 |
215 | // feedback velocity variable setup
216 | fv[0] = float(feedbackspeed) * (rsRandf(0.025f) + 0.025f);
217 | fv[1] = float(feedbackspeed) * (rsRandf(0.05f) + 0.05f);
218 | fv[2] = float(feedbackspeed) * (rsRandf(0.05f) + 0.05f);
219 | fv[3] = float(feedbackspeed) * (rsRandf(0.1f) + 0.1f);
220 | lv[0] = float(feedbackspeed) * (rsRandf(0.0025f) + 0.0025f);
221 | lv[1] = float(feedbackspeed) * (rsRandf(0.0025f) + 0.0025f);
222 | lv[2] = float(feedbackspeed) * (rsRandf(0.0025f) + 0.0025f);
223 | }
224 |
225 | // Initialize wisps
226 |
227 | wisps = new wisp[wispsCount];
228 |
229 | for(int i=0;i0)
235 | {
236 | backgroundLayers = new wisp[backgroundLayersCount];
237 |
238 | for(int i=0;i PIx2)
286 | fr[i] -= PIx2;
287 | }
288 |
289 | f[0] = 30.0f * cos((double)fr[0]);
290 | f[1] = 0.2f * cos((double)fr[1]);
291 | f[2] = 0.2f * cos((double)fr[2]);
292 | f[3] = 0.8f * cos((double)fr[3]);
293 |
294 | for(int i=0; i<3; i++)
295 | {
296 | lr[i] += tElapsedTime * lv[i];
297 | if(lr[i] > PIx2)
298 | lr[i] -= PIx2;
299 |
300 | l[i] = cos(lr[i]);
301 |
302 | l[i] = l[i] * l[i];
303 | }
304 |
305 | // Create drawing area for feedback texture
306 | glViewport(0, 0, feedbacktexsize, feedbacktexsize);
307 | glMatrixMode(GL_PROJECTION);
308 | glLoadIdentity();
309 | gluPerspective(30.0, aspectRatio, 0.01f, 20.0f);
310 | glMatrixMode(GL_MODELVIEW);
311 |
312 | // Draw
313 | glClear(GL_COLOR_BUFFER_BIT);
314 | glColor3f(feedbackIntensity, feedbackIntensity, feedbackIntensity);
315 | glBindTexture(GL_TEXTURE_2D, feedbacktex);
316 | glPushMatrix();
317 | glTranslatef(f[1] * l[1], f[2] * l[1], f[3] * l[2]);
318 | glRotatef(f[0] * l[0], 0, 0, 1);
319 | glBegin(GL_TRIANGLE_STRIP);
320 | glTexCoord2f(-0.5f, -0.5f);
321 | glVertex3f(-aspectRatio*2.0f, -2.0f, 1.25f);
322 | glTexCoord2f(1.5f, -0.5f);
323 | glVertex3f(aspectRatio*2.0f, -2.0f, 1.25f);
324 | glTexCoord2f(-0.5f, 1.5f);
325 | glVertex3f(-aspectRatio*2.0f, 2.0f, 1.25f);
326 | glTexCoord2f(1.5f, 1.5f);
327 | glVertex3f(aspectRatio*2.0f, 2.0f, 1.25f);
328 | glEnd();
329 | glPopMatrix();
330 | glBindTexture(GL_TEXTURE_2D, textureID);
331 |
332 | for(int i=0; imeshDensity * 0.5f);
422 |
423 | meshDensity=inScene->meshDensity;
424 |
425 | vertices = new float**[meshDensity+1];
426 |
427 | for(int i=0; i<=meshDensity; i++)
428 | {
429 | vertices[i] = new float*[meshDensity+1];
430 |
431 | for(int j=0; j<=meshDensity; j++)
432 | {
433 | float * pointer=vertices[i][j] = new float[7];
434 | pointer[3] = float(i) * recHalfDens - 1.0f; // x position on grid
435 | pointer[4] = float(j) * recHalfDens - 1.0f; // y position on grid
436 | // distance squared from the center
437 | pointer[5] = pointer[3] * pointer[3]
438 | + pointer[4] * pointer[4];
439 | pointer[6] = 0.0f; // intensity
440 | }
441 | }
442 |
443 | // initialize constants
444 | for(int i=0; ispeed * 0.03f) + (inScene->speed * 0.001f);
449 | }
450 |
451 | // pick color
452 | hsl[0] = rsRandf(1.0f);
453 | hsl[1] = 0.1f + rsRandf(0.9f);
454 | hsl[2] = 1.0f;
455 | hueSpeed = rsRandf(0.1f) - 0.05f;
456 | saturationSpeed = rsRandf(0.04f) + 0.001f;
457 | }
458 |
459 | void wisp::update(int inVisibility,float inElapsedTime)
460 | {
461 | rsVec up, right, crossvec;
462 | // visibility constants
463 | float viscon1 = inVisibility * 0.01f;
464 | float viscon2 = 1.0f / viscon1;
465 |
466 | // update constants
467 | for(int i=0; i PIx2)
471 | cr[i] -= PIx2;
472 |
473 | c[i] = cosf((double) cr[i]);
474 | }
475 |
476 | // update vertex positions
477 | for(int i=0; i<=meshDensity; i++)
478 | {
479 | for(int j=0; j<=meshDensity; j++)
480 | {
481 | float * pointer=vertices[i][j];
482 |
483 | pointer[0] = pointer[3] * pointer[3] * pointer[4] * c[0]
484 | + pointer[5] * c[1] + 0.5f * c[2];
485 | pointer[1] = pointer[4] * pointer[4] * pointer[5] * c[3]
486 | + pointer[3] * c[4] + 0.5f * c[5];
487 | pointer[2] = pointer[5] * pointer[5] * pointer[3] * c[6]
488 | + pointer[4] * c[7] + c[8];
489 | }
490 | }
491 |
492 | // update vertex normals for most of mesh
493 | for(int i=1; i 1.0f)
517 | {
518 | vertices[i][j][6] = 1.0f;
519 | }
520 | else
521 | {
522 | if(vertices[i][j][6] < 0.0f)
523 | {
524 | vertices[i][j][6] = 0.0f;
525 | }
526 | }
527 | }
528 | }
529 |
530 | // update color
531 |
532 | hsl[0] += hueSpeed * inElapsedTime;
533 |
534 | if(hsl[0] < 0.0f)
535 | {
536 | hsl[0] += 1.0f;
537 | }
538 | else
539 | {
540 | if(hsl[0] > 1.0f)
541 | {
542 | hsl[0] -= 1.0f;
543 | }
544 | }
545 |
546 | hsl[1] += saturationSpeed * inElapsedTime;
547 |
548 | if(hsl[1] <= 0.1f)
549 | {
550 | hsl[1] = 0.1f;
551 | saturationSpeed = -saturationSpeed;
552 | }
553 |
554 | if(hsl[1] >= 1.0f)
555 | {
556 | hsl[1] = 1.0f;
557 | saturationSpeed = -saturationSpeed;
558 | }
559 |
560 | hsl2rgb(hsl[0], hsl[1], hsl[2], rgb[0], rgb[1], rgb[2]);
561 | }
562 |
563 | void wisp::draw(bool inShowWireframe)
564 | {
565 | glPushMatrix();
566 |
567 | if(inShowWireframe==true)
568 | {
569 | for(int i=1; i
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | com.demonews.reallyslick.$(PRODUCT_NAME:rfc1034identifier)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 10.7
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 13
23 | NSPrincipalClass
24 | RSSEuphoriaView
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaConfigurationWindowController.h:
--------------------------------------------------------------------------------
1 |
2 | #import "RSSConfigurationWindowController.h"
3 |
4 | @interface RSSEuphoriaConfigurationWindowController : RSSConfigurationWindowController
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaConfigurationWindowController.m:
--------------------------------------------------------------------------------
1 |
2 | #import "RSSEuphoriaConfigurationWindowController.h"
3 |
4 | #import "RSSEuphoriaSettings.h"
5 |
6 | #import "RSSCollectionView.h"
7 |
8 | #import "RSSCollectionViewItem.h"
9 |
10 | @interface RSSEuphoriaConfigurationWindowController ()
11 | {
12 | IBOutlet RSSCollectionView *_settingsCollectionView;
13 |
14 | IBOutlet NSSlider * _numberOfWispsSlider;
15 | IBOutlet NSTextField * _numberOfWispsLabel;
16 | IBOutlet NSSlider * _numberOfBackgroundLayersSlider;
17 | IBOutlet NSTextField * _numberOfBackgroundLayersLabel;
18 |
19 | IBOutlet NSSlider * _meshDensitySlider;
20 | IBOutlet NSTextField * _meshDensityLabel;
21 | IBOutlet NSSlider * _visibilitySlider;
22 | IBOutlet NSTextField * _visibilityLabel;
23 | IBOutlet NSSlider * _speedSlider;
24 | IBOutlet NSTextField * _speedLabel;
25 |
26 | IBOutlet NSSlider * _feedbackSlider;
27 | IBOutlet NSTextField * _feedbackLabel;
28 | IBOutlet NSSlider * _feedbackSpeedSlider;
29 | IBOutlet NSTextField * _feedbackSpeedLabel;
30 | IBOutlet NSSlider * _feedbackTextureSizeSlider;
31 | IBOutlet NSTextField * _feedbackTextureSizeLabel;
32 | IBOutlet NSPopUpButton * _textureTypePopupButton;
33 | IBOutlet NSButton *_wireframeCheckbox;
34 |
35 | NSNumberFormatter * _numberFormatter;
36 | }
37 |
38 | - (void)_selectCollectionViewItemWithTag:(NSInteger)inTag;
39 |
40 | - (void)_setAsCustomSet;
41 |
42 | - (IBAction)setNumberOfWisps:(id)sender;
43 | - (IBAction)setNumberOfBackgroundLayers:(id)sender;
44 |
45 | - (IBAction)setMeshDensity:(id)sender;
46 | - (IBAction)setVisibility:(id)sender;
47 | - (IBAction)setSpeed:(id)sender;
48 |
49 | - (IBAction)setFeedback:(id)sender;
50 | - (IBAction)setFeedbackSpeed:(id)sender;
51 | - (IBAction)setFeedbackTextureSize:(id)sender;
52 | - (IBAction)setTextureType:(id)sender;
53 | - (IBAction)setWireframe:(id)sender;
54 |
55 | @end
56 |
57 | @implementation RSSEuphoriaConfigurationWindowController
58 |
59 | - (void)dealloc
60 | {
61 | [[NSDistributedNotificationCenter defaultCenter] removeObserver:self];
62 | }
63 |
64 | - (Class)settingsClass
65 | {
66 | return [RSSEuphoriaSettings class];
67 | }
68 |
69 | - (void)windowDidLoad
70 | {
71 | [super windowDidLoad];
72 |
73 | _numberFormatter=[NSNumberFormatter new];
74 |
75 | if (_numberFormatter!=nil)
76 | {
77 | _numberFormatter.hasThousandSeparators=YES;
78 | _numberFormatter.localizesFormat=YES;
79 | }
80 |
81 | NSBundle * tBundle=[NSBundle bundleForClass:[self class]];
82 |
83 | NSArray * tStandardSettingsArray=@[@{
84 | RSSCollectionViewRepresentedObjectThumbnail : @"regular_thumbnail",
85 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetRegular),
86 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Regular",@"Localized",tBundle,@"")
87 | },
88 | @{
89 | RSSCollectionViewRepresentedObjectThumbnail : @"grid_thumbnail",
90 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetGrid),
91 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Grid",@"Localized",tBundle,@"")
92 | },
93 | @{
94 | RSSCollectionViewRepresentedObjectThumbnail : @"cubism_thumbnail",
95 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetCubism),
96 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Cubism",@"Localized",tBundle,@"")
97 | },
98 | @{
99 | RSSCollectionViewRepresentedObjectThumbnail : @"badmath_thumbnail",
100 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetBadMath),
101 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Bad Math",@"Localized",tBundle,@"")
102 | },
103 | @{
104 | RSSCollectionViewRepresentedObjectThumbnail : @"mtheory_thumbnail",
105 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetMTheory),
106 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"M-Theory",@"Localized",tBundle,@"")
107 | },
108 | @{
109 | RSSCollectionViewRepresentedObjectThumbnail : @"uhftem_thumbnail",
110 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetUHFTEM),
111 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"UHFTEM",@"Localized",tBundle,@"")
112 | },
113 | @{
114 | RSSCollectionViewRepresentedObjectThumbnail : @"nowhere_thumbnail",
115 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetNowhere),
116 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Nowhere",@"Localized",tBundle,@"")
117 | },
118 | @{
119 | RSSCollectionViewRepresentedObjectThumbnail : @"echo_thumbnail",
120 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetEcho),
121 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Echo",@"Localized",tBundle,@"")
122 | },
123 | @{
124 | RSSCollectionViewRepresentedObjectThumbnail : @"kaleidoscope_thumbnail",
125 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetKaleidoscope),
126 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Kaleidoscope",@"Localized",tBundle,@"")
127 | },
128 | @{
129 | RSSCollectionViewRepresentedObjectThumbnail : @"random_thumbnail",
130 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetRandom),
131 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Random",@"Localized",tBundle,@"")
132 | },
133 | @{
134 | RSSCollectionViewRepresentedObjectThumbnail : @"custom_thumbnail",
135 | RSSCollectionViewRepresentedObjectTag : @(RSSEuphoriaSetCustom),
136 | RSSCollectionViewRepresentedObjectName : NSLocalizedStringFromTableInBundle(@"Custom",@"Localized",tBundle,@"")
137 | }];
138 |
139 | [_settingsCollectionView setContent:tStandardSettingsArray];
140 |
141 | /*[[NSDistributedNotificationCenter defaultCenter] addObserver:self
142 | selector:@selector(preferredScrollerStyleDidChange:)
143 | name:NSPreferredScrollerStyleDidChangeNotification
144 | object:nil
145 | suspensionBehavior:NSNotificationSuspensionBehaviorDeliverImmediately];*/
146 | }
147 |
148 | - (void)restoreUI
149 | {
150 | [super restoreUI];
151 |
152 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
153 |
154 | [self _selectCollectionViewItemWithTag:tEuphoriaSettings.standardSet];
155 |
156 |
157 | _numberOfWispsSlider.integerValue=tEuphoriaSettings.numberOfWisps;
158 | _numberOfWispsLabel.integerValue=tEuphoriaSettings.numberOfWisps;
159 |
160 | _numberOfBackgroundLayersSlider.integerValue=tEuphoriaSettings.numberOfBackgroundLayers;
161 | _numberOfBackgroundLayersLabel.integerValue=tEuphoriaSettings.numberOfBackgroundLayers;
162 |
163 |
164 | _meshDensitySlider.integerValue=tEuphoriaSettings.meshDensity;
165 | _meshDensityLabel.integerValue=tEuphoriaSettings.meshDensity;
166 |
167 | _visibilitySlider.integerValue=tEuphoriaSettings.visibility;
168 | _visibilityLabel.integerValue=tEuphoriaSettings.visibility;
169 |
170 | _speedSlider.integerValue=tEuphoriaSettings.speed;
171 | _speedLabel.integerValue=tEuphoriaSettings.speed;
172 |
173 |
174 | _feedbackSlider.integerValue=tEuphoriaSettings.feedback;
175 | _feedbackLabel.integerValue=tEuphoriaSettings.feedback;
176 |
177 | _feedbackSpeedSlider.integerValue=tEuphoriaSettings.feedbackSpeed;
178 | _feedbackSpeedLabel.integerValue=tEuphoriaSettings.feedbackSpeed;
179 |
180 | _feedbackTextureSizeSlider.integerValue=tEuphoriaSettings.feedbackTextureSize;
181 | _feedbackTextureSizeLabel.integerValue=tEuphoriaSettings.feedbackTextureSize;
182 |
183 | [_textureTypePopupButton selectItemWithTag:tEuphoriaSettings.texture];
184 |
185 | _wireframeCheckbox.state=(tEuphoriaSettings.texture==YES) ? NSOnState : NSOffState;
186 | }
187 |
188 | #pragma mark -
189 |
190 | - (void)_selectCollectionViewItemWithTag:(NSInteger)inTag
191 | {
192 | [_settingsCollectionView.content enumerateObjectsUsingBlock:^(NSDictionary * bDictionary,NSUInteger bIndex,BOOL * bOutStop){
193 | NSNumber * tNumber=bDictionary[RSSCollectionViewRepresentedObjectTag];
194 |
195 | if (tNumber!=nil)
196 | {
197 | if (inTag==[tNumber integerValue])
198 | {
199 | [_settingsCollectionView RSS_selectItemAtIndex:bIndex];
200 |
201 | *bOutStop=YES;
202 | }
203 | }
204 | }];
205 | }
206 |
207 | - (void)_setAsCustomSet
208 | {
209 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
210 |
211 | if (tEuphoriaSettings.standardSet!=RSSEuphoriaSetCustom)
212 | {
213 | tEuphoriaSettings.standardSet=RSSEuphoriaSetCustom;
214 |
215 | [self _selectCollectionViewItemWithTag:tEuphoriaSettings.standardSet];
216 | }
217 | }
218 |
219 | - (IBAction)setNumberOfWisps:(id)sender
220 | {
221 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
222 |
223 | if (tEuphoriaSettings.numberOfWisps!=[sender integerValue])
224 | {
225 | tEuphoriaSettings.numberOfWisps=[sender integerValue];
226 |
227 | _numberOfWispsLabel.integerValue=tEuphoriaSettings.numberOfWisps;
228 |
229 | [self _setAsCustomSet];
230 | }
231 | }
232 |
233 | - (IBAction)setNumberOfBackgroundLayers:(id)sender
234 | {
235 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
236 |
237 | if (tEuphoriaSettings.numberOfBackgroundLayers!=[sender integerValue])
238 | {
239 | tEuphoriaSettings.numberOfBackgroundLayers=[sender integerValue];
240 |
241 | _numberOfBackgroundLayersLabel.integerValue=tEuphoriaSettings.numberOfBackgroundLayers;
242 |
243 | [self _setAsCustomSet];
244 | }
245 | }
246 |
247 | - (IBAction)setMeshDensity:(id)sender
248 | {
249 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
250 |
251 | if (tEuphoriaSettings.meshDensity!=[sender integerValue])
252 | {
253 | tEuphoriaSettings.meshDensity=[sender integerValue];
254 |
255 | _meshDensityLabel.integerValue=tEuphoriaSettings.meshDensity;
256 |
257 | [self _setAsCustomSet];
258 | }
259 | }
260 |
261 | - (IBAction)setVisibility:(id)sender
262 | {
263 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
264 |
265 | if (tEuphoriaSettings.visibility!=[sender integerValue])
266 | {
267 | tEuphoriaSettings.visibility=[sender integerValue];
268 |
269 | _visibilityLabel.integerValue=tEuphoriaSettings.visibility;
270 |
271 | [self _setAsCustomSet];
272 | }
273 | }
274 |
275 | - (IBAction)setSpeed:(id)sender
276 | {
277 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
278 |
279 | if (tEuphoriaSettings.speed!=[sender integerValue])
280 | {
281 | tEuphoriaSettings.speed=[sender integerValue];
282 |
283 | _speedLabel.integerValue=tEuphoriaSettings.speed;
284 |
285 | [self _setAsCustomSet];
286 | }
287 | }
288 |
289 | - (IBAction)setFeedback:(id)sender
290 | {
291 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
292 |
293 | if (tEuphoriaSettings.feedback!=[sender integerValue])
294 | {
295 | tEuphoriaSettings.feedback=[sender integerValue];
296 |
297 | _feedbackLabel.integerValue=tEuphoriaSettings.feedback;
298 |
299 | [self _setAsCustomSet];
300 | }
301 | }
302 |
303 | - (IBAction)setFeedbackSpeed:(id)sender
304 | {
305 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
306 |
307 | if (tEuphoriaSettings.feedbackSpeed!=[sender integerValue])
308 | {
309 | tEuphoriaSettings.feedbackSpeed=[sender integerValue];
310 |
311 | _feedbackSpeedLabel.integerValue=tEuphoriaSettings.feedbackSpeed;
312 |
313 | [self _setAsCustomSet];
314 | }
315 | }
316 |
317 | - (IBAction)setFeedbackTextureSize:(id)sender
318 | {
319 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
320 |
321 | if (tEuphoriaSettings.feedbackTextureSize!=[sender integerValue])
322 | {
323 | tEuphoriaSettings.feedbackTextureSize=[sender integerValue];
324 |
325 | _feedbackTextureSizeLabel.integerValue=tEuphoriaSettings.feedbackTextureSize;
326 |
327 | [self _setAsCustomSet];
328 | }
329 | }
330 |
331 | - (IBAction)setTextureType:(id)sender
332 | {
333 | RSSEuphoriaTextureType nTexture=[sender selectedTag];
334 |
335 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
336 |
337 | if (tEuphoriaSettings.texture!=nTexture)
338 | {
339 | tEuphoriaSettings.texture=nTexture;
340 |
341 | [self _setAsCustomSet];
342 | }
343 | }
344 |
345 | - (IBAction)setWireframe:(id)sender
346 | {
347 | BOOL nValue=([sender state]==NSOnState);
348 |
349 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
350 |
351 | if (tEuphoriaSettings.showWireframe!=nValue)
352 | {
353 | tEuphoriaSettings.showWireframe=nValue;
354 |
355 | [self _setAsCustomSet];
356 | }
357 | }
358 |
359 | #pragma mark -
360 |
361 | - (BOOL)RSS_collectionView:(NSCollectionView *)inCollectionView shouldSelectItemAtIndex:(NSInteger)inIndex
362 | {
363 | RSSCollectionViewItem * tCollectionViewItem=(RSSCollectionViewItem *)[_settingsCollectionView itemAtIndex:inIndex];
364 |
365 | if (tCollectionViewItem!=nil)
366 | {
367 | NSInteger tTag=tCollectionViewItem.tag;
368 |
369 | if (tTag==RSSEuphoriaSetCustom)
370 | return NO;
371 | }
372 |
373 | return YES;
374 | }
375 |
376 | - (void)RSS_collectionViewSelectionDidChange:(NSNotification *)inNotification
377 | {
378 | if (inNotification.object==_settingsCollectionView)
379 | {
380 | NSIndexSet * tIndexSet=[_settingsCollectionView selectionIndexes];
381 | NSUInteger tIndex=[tIndexSet firstIndex];
382 |
383 | RSSCollectionViewItem * tCollectionViewItem=(RSSCollectionViewItem *)[_settingsCollectionView itemAtIndex:tIndex];
384 |
385 | if (tCollectionViewItem!=nil)
386 | {
387 | NSInteger tTag=tCollectionViewItem.tag;
388 | RSSEuphoriaSettings * tEuphoriaSettings=(RSSEuphoriaSettings *) sceneSettings;
389 |
390 | if (tEuphoriaSettings.standardSet!=tTag)
391 | {
392 | tEuphoriaSettings.standardSet=tTag;
393 |
394 | if (tTag!=RSSEuphoriaSetRandom)
395 | {
396 | [tEuphoriaSettings resetSettingsToStandardSet:tTag];
397 |
398 | [self restoreUI];
399 | }
400 | }
401 | }
402 | }
403 | }
404 |
405 | @end
406 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaSettings.h:
--------------------------------------------------------------------------------
1 |
2 | #import "RSSSettings.h"
3 |
4 | typedef NS_ENUM(NSUInteger, RSSEuphoriaSet)
5 | {
6 | RSSEuphoriaSetCustom=0,
7 | RSSEuphoriaSetRandom=1,
8 | RSSEuphoriaSetRegular=1027,
9 | RSSEuphoriaSetGrid=1028,
10 | RSSEuphoriaSetCubism=1029,
11 | RSSEuphoriaSetBadMath=1030,
12 | RSSEuphoriaSetMTheory=31,
13 | RSSEuphoriaSetUHFTEM=1032, // ultra high frequency tunneling electron microscope
14 | RSSEuphoriaSetNowhere=1033,
15 | RSSEuphoriaSetEcho=1034,
16 | RSSEuphoriaSetKaleidoscope=1035
17 | };
18 |
19 | typedef NS_ENUM(NSUInteger, RSSEuphoriaTextureType)
20 | {
21 | RSSEuphoriaTextureTypeNone=0,
22 | RSSEuphoriaTextureTypePlasma=1,
23 | RSSEuphoriaTextureTypeStringy=2,
24 | RSSEuphoriaTextureTypeLinear=3,
25 | RSSEuphoriaTextureTypeRandom=4
26 | };
27 |
28 | @interface RSSEuphoriaSettings : RSSSettings
29 |
30 | @property RSSEuphoriaSet standardSet;
31 |
32 |
33 | @property NSUInteger numberOfWisps;
34 |
35 | @property NSUInteger numberOfBackgroundLayers;
36 |
37 | @property NSUInteger meshDensity;
38 |
39 | @property NSUInteger visibility;
40 |
41 | @property NSUInteger speed;
42 |
43 | @property NSUInteger feedback;
44 |
45 | @property NSUInteger feedbackSpeed;
46 |
47 | @property NSUInteger feedbackTextureSize;
48 |
49 | @property RSSEuphoriaTextureType texture;
50 |
51 | @property BOOL showWireframe;
52 |
53 |
54 | - (void)resetSettingsToStandardSet:(RSSEuphoriaSet)inSet;
55 |
56 | @end
57 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaSettings.m:
--------------------------------------------------------------------------------
1 | #import "RSSEuphoriaSettings.h"
2 |
3 | NSString * const RSSEuphoria_Settings_StandardSetKey=@"Standard set";
4 | NSString * const RSSEuphoria_Settings_WispsCountKey=@"Wisps count";
5 | NSString * const RSSEuphoria_Settings_BackgroundLayersCountKey=@"Background count";
6 | NSString * const RSSEuphoria_Settings_MeshDensityKey=@"Density";
7 | NSString * const RSSEuphoria_Settings_VisibilityKey=@"Visibility";
8 | NSString * const RSSEuphoria_Settings_SpeedKey=@"Speed";
9 | NSString * const RSSEuphoria_Settings_FeedbackKey=@"Feedback";
10 | NSString * const RSSEuphoria_Settings_FeedbackSpeedKey=@"Feedback speed";
11 | NSString * const RSSEuphoria_Settings_FeedbackTextureSizeKey=@"Feedback size";
12 | NSString * const RSSEuphoria_Settings_TextureKey=@"Texture";
13 | NSString * const RSSEuphoria_Settings_ShowWireframeKey=@"Wireframe";
14 |
15 | @implementation RSSEuphoriaSettings
16 |
17 | - (id)initWithDictionaryRepresentation:(NSDictionary *)inDictionary
18 | {
19 | self=[super init];
20 |
21 | if (self!=nil)
22 | {
23 | NSNumber * tNumber=inDictionary[RSSEuphoria_Settings_StandardSetKey];
24 |
25 | if (tNumber==nil)
26 | _standardSet=RSSEuphoriaSetRegular;
27 | else
28 | _standardSet=[tNumber unsignedIntegerValue];
29 |
30 | if (_standardSet==RSSEuphoriaSetCustom)
31 | {
32 | _numberOfWisps=[inDictionary[RSSEuphoria_Settings_WispsCountKey] unsignedIntegerValue];
33 | _numberOfBackgroundLayers=[inDictionary[RSSEuphoria_Settings_BackgroundLayersCountKey] unsignedIntegerValue];
34 | _meshDensity=[inDictionary[RSSEuphoria_Settings_MeshDensityKey] unsignedIntegerValue];
35 | _visibility=[inDictionary[RSSEuphoria_Settings_VisibilityKey] unsignedIntegerValue];
36 | _speed=[inDictionary[RSSEuphoria_Settings_SpeedKey] unsignedIntegerValue];
37 | _feedback=[inDictionary[RSSEuphoria_Settings_FeedbackKey] unsignedIntegerValue];
38 | _feedbackSpeed=[inDictionary[RSSEuphoria_Settings_FeedbackSpeedKey] unsignedIntegerValue];
39 | _feedbackTextureSize=[inDictionary[RSSEuphoria_Settings_FeedbackTextureSizeKey] unsignedIntegerValue];
40 | _texture=[inDictionary[RSSEuphoria_Settings_TextureKey] unsignedIntegerValue];
41 | _showWireframe=[inDictionary[RSSEuphoria_Settings_ShowWireframeKey] boolValue];
42 | }
43 | else if (_standardSet!=RSSEuphoriaSetRandom)
44 | {
45 | [self resetSettingsToStandardSet:_standardSet];
46 | }
47 | }
48 |
49 | return self;
50 | }
51 |
52 | - (NSDictionary *)dictionaryRepresentation
53 | {
54 | NSMutableDictionary * tMutableDictionary=[NSMutableDictionary dictionary];
55 |
56 | if (tMutableDictionary!=nil)
57 | {
58 | tMutableDictionary[RSSEuphoria_Settings_StandardSetKey]=@(_standardSet);
59 |
60 | tMutableDictionary[RSSEuphoria_Settings_WispsCountKey]=@(_numberOfWisps);
61 | tMutableDictionary[RSSEuphoria_Settings_BackgroundLayersCountKey]=@(_numberOfBackgroundLayers);
62 | tMutableDictionary[RSSEuphoria_Settings_MeshDensityKey]=@(_meshDensity);
63 | tMutableDictionary[RSSEuphoria_Settings_VisibilityKey]=@(_visibility);
64 | tMutableDictionary[RSSEuphoria_Settings_SpeedKey]=@(_speed);
65 | tMutableDictionary[RSSEuphoria_Settings_FeedbackKey]=@(_feedback);
66 | tMutableDictionary[RSSEuphoria_Settings_FeedbackSpeedKey]=@(_feedbackSpeed);
67 | tMutableDictionary[RSSEuphoria_Settings_FeedbackTextureSizeKey]=@(_feedbackTextureSize);
68 | tMutableDictionary[RSSEuphoria_Settings_TextureKey]=@(_texture);
69 | tMutableDictionary[RSSEuphoria_Settings_ShowWireframeKey]=@(_showWireframe);
70 | }
71 |
72 | return [tMutableDictionary copy];
73 | }
74 |
75 | #pragma mark -
76 |
77 | - (void)resetSettings
78 | {
79 | _standardSet=RSSEuphoriaSetRegular;
80 |
81 | [self resetSettingsToStandardSet:_standardSet];
82 | }
83 |
84 | - (void)resetSettingsToStandardSet:(RSSEuphoriaSet)inSet;
85 | {
86 | switch(inSet)
87 | {
88 | case RSSEuphoriaSetRegular:
89 |
90 | _numberOfWisps=5;
91 | _numberOfBackgroundLayers=0;
92 | _meshDensity=25;
93 | _visibility=35;
94 | _speed=15;
95 |
96 | _feedback=0;
97 | _feedbackSpeed=1;
98 | _feedbackTextureSize=8;
99 | _texture=RSSEuphoriaTextureTypeStringy;
100 |
101 | _showWireframe=NO;
102 |
103 | break;
104 |
105 | case RSSEuphoriaSetGrid:
106 |
107 | _numberOfWisps=4;
108 | _numberOfBackgroundLayers=1;
109 | _meshDensity=25;
110 | _visibility=70;
111 | _speed=15;
112 |
113 | _feedback=0;
114 | _feedbackSpeed=1;
115 | _feedbackTextureSize=8;
116 | _texture=RSSEuphoriaTextureTypeNone;
117 |
118 | _showWireframe=YES;
119 |
120 | break;
121 |
122 | case RSSEuphoriaSetCubism:
123 |
124 | _numberOfWisps=15;
125 | _numberOfBackgroundLayers=0;
126 | _meshDensity=4;
127 | _visibility=15;
128 | _speed=10;
129 |
130 | _feedback=0;
131 | _feedbackSpeed=1;
132 | _feedbackTextureSize=8;
133 | _texture=RSSEuphoriaTextureTypeNone;
134 |
135 | _showWireframe=NO;
136 |
137 | break;
138 |
139 | case RSSEuphoriaSetBadMath:
140 |
141 | _numberOfWisps=2;
142 | _numberOfBackgroundLayers=2;
143 | _meshDensity=20;
144 | _visibility=40;
145 | _speed=30;
146 |
147 | _feedback=40;
148 | _feedbackSpeed=5;
149 | _feedbackTextureSize=8;
150 | _texture=RSSEuphoriaTextureTypeStringy;
151 |
152 | _showWireframe=YES;
153 |
154 | break;
155 |
156 | case RSSEuphoriaSetMTheory:
157 |
158 | _numberOfWisps=3;
159 | _numberOfBackgroundLayers=0;
160 | _meshDensity=25;
161 | _visibility=15;
162 | _speed=20;
163 |
164 | _feedback=40;
165 | _feedbackSpeed=20;
166 | _feedbackTextureSize=8;
167 | _texture=RSSEuphoriaTextureTypeNone;
168 |
169 | _showWireframe=NO;
170 |
171 | break;
172 |
173 | case RSSEuphoriaSetUHFTEM:
174 |
175 | _numberOfWisps=0;
176 | _numberOfBackgroundLayers=3;
177 | _meshDensity=35;
178 | _visibility=5;
179 | _speed=50;
180 |
181 | _feedback=0;
182 | _feedbackSpeed=1;
183 | _feedbackTextureSize=8;
184 | _texture=RSSEuphoriaTextureTypeNone;
185 |
186 | _showWireframe=NO;
187 |
188 | break;
189 |
190 | case RSSEuphoriaSetNowhere:
191 |
192 | _numberOfWisps=0;
193 | _numberOfBackgroundLayers=3;
194 | _meshDensity=30;
195 | _visibility=40;
196 | _speed=20;
197 |
198 | _feedback=80;
199 | _feedbackSpeed=10;
200 | _feedbackTextureSize=8;
201 | _texture=RSSEuphoriaTextureTypeLinear;
202 |
203 | _showWireframe=YES;
204 |
205 | break;
206 |
207 | case RSSEuphoriaSetEcho:
208 |
209 | _numberOfWisps=3;
210 | _numberOfBackgroundLayers=0;
211 | _meshDensity=25;
212 | _visibility=30;
213 | _speed=20;
214 |
215 | _feedback=85;
216 | _feedbackSpeed=30;
217 | _feedbackTextureSize=8;
218 | _texture=RSSEuphoriaTextureTypePlasma;
219 |
220 | _showWireframe=NO;
221 |
222 | break;
223 |
224 | case RSSEuphoriaSetKaleidoscope:
225 |
226 | _numberOfWisps=3;
227 | _numberOfBackgroundLayers=0;
228 | _meshDensity=25;
229 | _visibility=40;
230 | _speed=15;
231 |
232 | _feedback=90;
233 | _feedbackSpeed=3;
234 | _feedbackTextureSize=8;
235 | _texture=RSSEuphoriaTextureTypeNone;
236 |
237 | _showWireframe=NO;
238 |
239 | break;
240 |
241 | default:
242 |
243 | NSLog(@"This should not be invoked for set: %u",(unsigned int)inSet);
244 |
245 | break;
246 | }
247 | }
248 |
249 | @end
250 |
251 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaView.h:
--------------------------------------------------------------------------------
1 |
2 | #import
3 |
4 | @interface RSSEuphoriaView : ScreenSaverView
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/Euphoria/RSSEuphoriaView.mm:
--------------------------------------------------------------------------------
1 |
2 | #import "RSSEuphoriaView.h"
3 |
4 | #import "RSSEuphoriaConfigurationWindowController.h"
5 |
6 | #import "RSSUserDefaults+Constants.h"
7 |
8 | #import "RSSEuphoriaSettings.h"
9 |
10 | #include "Euphoria.h"
11 |
12 | #import
13 |
14 | @interface RSSEuphoriaView ()
15 | {
16 | BOOL _preview;
17 | BOOL _mainScreen;
18 |
19 | BOOL _OpenGLIncompatibilityDetected;
20 |
21 | NSOpenGLView *_openGLView;
22 |
23 | scene *_scene;
24 |
25 | // Preferences
26 |
27 | RSSEuphoriaConfigurationWindowController *_configurationWindowController;
28 | }
29 |
30 | + (void)_initializeScene:(scene *)inScene withSettings:(RSSEuphoriaSettings *)inSettings;
31 |
32 | @end
33 |
34 | @implementation RSSEuphoriaView
35 |
36 | + (void)_initializeScene:(scene *)inScene withSettings:(RSSEuphoriaSettings *)inSettings
37 | {
38 | if (inSettings.standardSet==RSSEuphoriaSetRandom)
39 | {
40 | NSUInteger tRandomSet;
41 |
42 | tRandomSet=(NSUInteger) SSRandomFloatBetween(RSSEuphoriaSetRegular,RSSEuphoriaSetKaleidoscope);
43 |
44 | [inSettings resetSettingsToStandardSet:(RSSEuphoriaSet) tRandomSet];
45 | }
46 |
47 | inScene->wispsCount=(int)inSettings.numberOfWisps;
48 | inScene->backgroundLayersCount=(int)inSettings.numberOfBackgroundLayers;
49 | inScene->backgroundLayersCount=(int)inSettings.numberOfBackgroundLayers;
50 | inScene->meshDensity=(int)inSettings.meshDensity;
51 | inScene->visibility=(int)inSettings.visibility;
52 | inScene->speed=(int)inSettings.speed;
53 | inScene->feedback=(int)inSettings.feedback;
54 | inScene->feedbackspeed=(int)inSettings.feedbackSpeed;
55 | inScene->feedbacksize=(int)inSettings.feedbackTextureSize;
56 | inScene->textureType=(int)inSettings.texture;
57 | inScene->wireframe=(bool)inSettings.showWireframe;
58 | }
59 |
60 | - (instancetype)initWithFrame:(NSRect)frameRect isPreview:(BOOL)isPreview
61 | {
62 | self=[super initWithFrame:frameRect isPreview:isPreview];
63 |
64 | if (self!=nil)
65 | {
66 | _preview=isPreview;
67 |
68 | if (_preview==YES)
69 | _mainScreen=YES;
70 | else
71 | _mainScreen= (NSMinX(frameRect)==0 && NSMinY(frameRect)==0);
72 |
73 | [self setAnimationTimeInterval:0.05];
74 | }
75 |
76 | return self;
77 | }
78 |
79 | - (void)dealloc
80 | {
81 | if (_scene!=NULL)
82 | {
83 | delete _scene;
84 | _scene=NULL;
85 | }
86 | }
87 |
88 | #pragma mark -
89 |
90 | - (void) setFrameSize:(NSSize)newSize
91 | {
92 | [super setFrameSize:newSize];
93 |
94 | if (_openGLView!=nil)
95 | [_openGLView setFrameSize:newSize];
96 | }
97 |
98 | #pragma mark -
99 |
100 | - (void) drawRect:(NSRect) inFrame
101 | {
102 | [[NSColor blackColor] set];
103 |
104 | NSRectFill(inFrame);
105 |
106 | if (_OpenGLIncompatibilityDetected==YES)
107 | {
108 | BOOL tShowErrorMessage=_mainScreen;
109 |
110 | if (tShowErrorMessage==NO)
111 | {
112 | NSString *tIdentifier = [[NSBundle bundleForClass:[self class]] bundleIdentifier];
113 | ScreenSaverDefaults *tDefaults = [ScreenSaverDefaults defaultsForModuleWithName:tIdentifier];
114 |
115 | tShowErrorMessage=![tDefaults boolForKey:RSSUserDefaultsMainDisplayOnly];
116 | }
117 |
118 | if (tShowErrorMessage==YES)
119 | {
120 | NSRect tFrame=self.frame;
121 |
122 | NSMutableParagraphStyle * tMutableParagraphStyle=[[NSParagraphStyle defaultParagraphStyle] mutableCopy];
123 | [tMutableParagraphStyle setAlignment:NSCenterTextAlignment];
124 |
125 | NSDictionary * tAttributes = @{NSFontAttributeName:[NSFont systemFontOfSize:[NSFont systemFontSize]],
126 | NSForegroundColorAttributeName:[NSColor whiteColor],
127 | NSParagraphStyleAttributeName:tMutableParagraphStyle};
128 |
129 |
130 | NSString * tString=NSLocalizedStringFromTableInBundle(@"Minimum OpenGL requirements\rfor this Screen Effect\rnot available\ron your graphic card.",@"Localizable",[NSBundle bundleForClass:[self class]],@"No comment");
131 |
132 | NSRect tStringFrame;
133 |
134 | tStringFrame.origin=NSZeroPoint;
135 | tStringFrame.size=[tString sizeWithAttributes:tAttributes];
136 |
137 | tStringFrame=SSCenteredRectInRect(tStringFrame,tFrame);
138 |
139 | [tString drawInRect:tStringFrame withAttributes:tAttributes];
140 | }
141 | }
142 | }
143 |
144 | #pragma mark -
145 |
146 | - (void)startAnimation
147 | {
148 | _OpenGLIncompatibilityDetected=NO;
149 |
150 | [super startAnimation];
151 |
152 | NSString *tIdentifier = [[NSBundle bundleForClass:[self class]] bundleIdentifier];
153 | ScreenSaverDefaults *tDefaults = [ScreenSaverDefaults defaultsForModuleWithName:tIdentifier];
154 |
155 | BOOL tBool=[tDefaults boolForKey:RSSUserDefaultsMainDisplayOnly];
156 |
157 | if (tBool==YES && _mainScreen==NO)
158 | return;
159 |
160 | // Add OpenGLView
161 |
162 | NSOpenGLPixelFormatAttribute attribs[] =
163 | {
164 | NSOpenGLPFADoubleBuffer,
165 | NSOpenGLPFADepthSize,(NSOpenGLPixelFormatAttribute)16,
166 | NSOpenGLPFAMinimumPolicy,
167 | (NSOpenGLPixelFormatAttribute)0
168 | };
169 |
170 | NSOpenGLPixelFormat *tFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:attribs];
171 |
172 | if (tFormat==nil)
173 | {
174 | _OpenGLIncompatibilityDetected=YES;
175 | return;
176 | }
177 |
178 | if (_openGLView!=nil)
179 | {
180 | [_openGLView removeFromSuperview];
181 | _openGLView=nil;
182 | }
183 |
184 | _openGLView = [[NSOpenGLView alloc] initWithFrame:self.bounds pixelFormat:tFormat];
185 |
186 | if (_openGLView!=nil)
187 | {
188 | [_openGLView setWantsBestResolutionOpenGLSurface:YES];
189 |
190 | [self addSubview:_openGLView];
191 | }
192 | else
193 | {
194 | _OpenGLIncompatibilityDetected=YES;
195 | return;
196 | }
197 |
198 | [[_openGLView openGLContext] makeCurrentContext];
199 |
200 | NSRect tPixelBounds=[_openGLView convertRectToBacking:_openGLView.bounds];
201 | NSSize tSize=tPixelBounds.size;
202 |
203 | _scene=new scene();
204 |
205 | if (_scene!=NULL)
206 | {
207 | [RSSEuphoriaView _initializeScene:_scene
208 | withSettings:[[RSSEuphoriaSettings alloc] initWithDictionaryRepresentation:[tDefaults dictionaryRepresentation]]];
209 |
210 | _scene->resize((int)tSize.width, (int)tSize.height);
211 | _scene->create();
212 | }
213 |
214 | const GLint tSwapInterval=1;
215 | CGLSetParameter(CGLGetCurrentContext(), kCGLCPSwapInterval,&tSwapInterval);
216 | }
217 |
218 | - (void)stopAnimation
219 | {
220 | [super stopAnimation];
221 |
222 | if (_scene!=NULL)
223 | {
224 | delete _scene;
225 | _scene=NULL;
226 | }
227 | }
228 |
229 | - (void)animateOneFrame
230 | {
231 | if (_openGLView!=nil)
232 | {
233 | [[_openGLView openGLContext] makeCurrentContext];
234 |
235 | if (_scene!=NULL)
236 | _scene->draw();
237 |
238 | [[_openGLView openGLContext] flushBuffer];
239 | }
240 | }
241 |
242 | #pragma mark - Configuration
243 |
244 | - (BOOL)hasConfigureSheet
245 | {
246 | return YES;
247 | }
248 |
249 | - (NSWindow*)configureSheet
250 | {
251 | if (_configurationWindowController==nil)
252 | _configurationWindowController=[[RSSEuphoriaConfigurationWindowController alloc] init];
253 |
254 | NSWindow * tWindow=_configurationWindowController.window;
255 |
256 | [_configurationWindowController restoreUI];
257 |
258 | return tWindow;
259 | }
260 |
261 | @end
262 |
--------------------------------------------------------------------------------
/Euphoria/de.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/de.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/en.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/en.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/es.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/es.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/es.lproj/RSSEuphoriaConfigurationWindowController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
109 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
--------------------------------------------------------------------------------
/Euphoria/fr.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/fr.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/fr.lproj/RSSEuphoriaConfigurationWindowController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
109 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
--------------------------------------------------------------------------------
/Euphoria/images/badmath_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/badmath_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/badmath_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/badmath_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/cubism_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/cubism_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/cubism_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/cubism_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/echo_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/echo_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/echo_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/echo_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/grid_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/grid_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/grid_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/grid_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/kaleidoscope_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/kaleidoscope_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/kaleidoscope_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/kaleidoscope_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/mtheory_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/mtheory_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/mtheory_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/mtheory_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/nowhere_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/nowhere_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/nowhere_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/nowhere_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/regular_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/regular_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/regular_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/regular_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/images/uhftem_thumbnail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/uhftem_thumbnail.png
--------------------------------------------------------------------------------
/Euphoria/images/uhftem_thumbnail@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/images/uhftem_thumbnail@2x.png
--------------------------------------------------------------------------------
/Euphoria/it.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/it.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/it.lproj/RSSEuphoriaConfigurationWindowController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
109 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
--------------------------------------------------------------------------------
/Euphoria/ja.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/ja.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/sv.lproj/Localized.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/packagesdev/euphoria/5f9dcd0036c5df8f361ab31db4cd8e9749e9a8f7/Euphoria/sv.lproj/Localized.strings
--------------------------------------------------------------------------------
/Euphoria/sv.lproj/RSSEuphoriaConfigurationWindowController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
109 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
--------------------------------------------------------------------------------