processing/
constants.rs

1use glutin;
2
3///! These constants come from and are inspired by the pyprocessing project
4///! (https://code.google.com/p/pyprocessing/source/browse/trunk/pyprocessing/constants.py)
5///! with some slight adjustments
6
7// shapes
8// pub const POINTS = GL_POINTS;
9// pub const LINES = GL_LINES;
10// pub const TRIANGLES = GL_TRIANGLES;
11// pub const TRIANGLE_FAN = GL_TRIANGLE_FAN;
12// pub const TRIANGLE_STRIP = GL_TRIANGLE_STRIP;
13// pub const QUADS = GL_QUADS;
14// pub const QUAD_STRIP = GL_QUAD_STRIP;
15pub const CLOSE: isize = 1;
16
17/// Perlin noise table. Use it as a precomputed source of noise that emulates the
18/// randomness found in natural processes.
19pub const PERLIN: [isize; 512] = [
20    151,
21    160,
22    137,
23    91,
24    90,
25    15,
26    131,
27    13,
28    201,
29    95,
30    96,
31    53,
32    194,
33    233,
34    7,
35    225,
36    140,
37    36,
38    103,
39    30,
40    69,
41    142,
42    8,
43    99,
44    37,
45    240,
46    21,
47    10,
48    23,
49    190,
50    6,
51    148,
52    247,
53    120,
54    234,
55    75,
56    0,
57    26,
58    197,
59    62,
60    94,
61    252,
62    219,
63    203,
64    117,
65    35,
66    11,
67    32,
68    57,
69    177,
70    33,
71    88,
72    237,
73    149,
74    56,
75    87,
76    174,
77    20,
78    125,
79    136,
80    171,
81    168,
82    68,
83    175,
84    74,
85    165,
86    71,
87    134,
88    139,
89    48,
90    27,
91    166,
92    77,
93    146,
94    158,
95    231,
96    83,
97    111,
98    229,
99    122,
100    60,
101    211,
102    133,
103    230,
104    220,
105    105,
106    92,
107    41,
108    55,
109    46,
110    245,
111    40,
112    244,
113    102,
114    143,
115    54,
116    65,
117    25,
118    63,
119    161,
120    1,
121    216,
122    80,
123    73,
124    209,
125    76,
126    132,
127    187,
128    208,
129    89,
130    18,
131    169,
132    200,
133    196,
134    135,
135    130,
136    116,
137    188,
138    159,
139    86,
140    164,
141    100,
142    109,
143    198,
144    173,
145    186,
146    3,
147    64,
148    52,
149    217,
150    226,
151    250,
152    124,
153    123,
154    5,
155    202,
156    38,
157    147,
158    118,
159    126,
160    255,
161    82,
162    85,
163    212,
164    207,
165    206,
166    59,
167    227,
168    47,
169    16,
170    58,
171    17,
172    182,
173    189,
174    28,
175    42,
176    223,
177    183,
178    170,
179    213,
180    119,
181    248,
182    152,
183    2,
184    44,
185    154,
186    163,
187    70,
188    221,
189    153,
190    101,
191    155,
192    167,
193    43,
194    172,
195    9,
196    129,
197    22,
198    39,
199    253,
200    19,
201    98,
202    108,
203    110,
204    79,
205    113,
206    224,
207    232,
208    178,
209    185,
210    112,
211    104,
212    218,
213    246,
214    97,
215    228,
216    251,
217    34,
218    242,
219    193,
220    238,
221    210,
222    144,
223    12,
224    191,
225    179,
226    162,
227    241,
228    81,
229    51,
230    145,
231    235,
232    249,
233    14,
234    239,
235    107,
236    49,
237    192,
238    214,
239    31,
240    181,
241    199,
242    106,
243    157,
244    184,
245    84,
246    204,
247    176,
248    115,
249    121,
250    50,
251    45,
252    127,
253    4,
254    150,
255    254,
256    138,
257    236,
258    205,
259    93,
260    222,
261    114,
262    67,
263    29,
264    24,
265    72,
266    243,
267    141,
268    128,
269    195,
270    78,
271    66,
272    215,
273    61,
274    156,
275    180,
276    151,
277    160,
278    137,
279    91,
280    90,
281    15,
282    131,
283    13,
284    201,
285    95,
286    96,
287    53,
288    194,
289    233,
290    7,
291    225,
292    140,
293    36,
294    103,
295    30,
296    69,
297    142,
298    8,
299    99,
300    37,
301    240,
302    21,
303    10,
304    23,
305    190,
306    6,
307    148,
308    247,
309    120,
310    234,
311    75,
312    0,
313    26,
314    197,
315    62,
316    94,
317    252,
318    219,
319    203,
320    117,
321    35,
322    11,
323    32,
324    57,
325    177,
326    33,
327    88,
328    237,
329    149,
330    56,
331    87,
332    174,
333    20,
334    125,
335    136,
336    171,
337    168,
338    68,
339    175,
340    74,
341    165,
342    71,
343    134,
344    139,
345    48,
346    27,
347    166,
348    77,
349    146,
350    158,
351    231,
352    83,
353    111,
354    229,
355    122,
356    60,
357    211,
358    133,
359    230,
360    220,
361    105,
362    92,
363    41,
364    55,
365    46,
366    245,
367    40,
368    244,
369    102,
370    143,
371    54,
372    65,
373    25,
374    63,
375    161,
376    1,
377    216,
378    80,
379    73,
380    209,
381    76,
382    132,
383    187,
384    208,
385    89,
386    18,
387    169,
388    200,
389    196,
390    135,
391    130,
392    116,
393    188,
394    159,
395    86,
396    164,
397    100,
398    109,
399    198,
400    173,
401    186,
402    3,
403    64,
404    52,
405    217,
406    226,
407    250,
408    124,
409    123,
410    5,
411    202,
412    38,
413    147,
414    118,
415    126,
416    255,
417    82,
418    85,
419    212,
420    207,
421    206,
422    59,
423    227,
424    47,
425    16,
426    58,
427    17,
428    182,
429    189,
430    28,
431    42,
432    223,
433    183,
434    170,
435    213,
436    119,
437    248,
438    152,
439    2,
440    44,
441    154,
442    163,
443    70,
444    221,
445    153,
446    101,
447    155,
448    167,
449    43,
450    172,
451    9,
452    129,
453    22,
454    39,
455    253,
456    19,
457    98,
458    108,
459    110,
460    79,
461    113,
462    224,
463    232,
464    178,
465    185,
466    112,
467    104,
468    218,
469    246,
470    97,
471    228,
472    251,
473    34,
474    242,
475    193,
476    238,
477    210,
478    144,
479    12,
480    191,
481    179,
482    162,
483    241,
484    81,
485    51,
486    145,
487    235,
488    249,
489    14,
490    239,
491    107,
492    49,
493    192,
494    214,
495    31,
496    181,
497    199,
498    106,
499    157,
500    184,
501    84,
502    204,
503    176,
504    115,
505    121,
506    50,
507    45,
508    127,
509    4,
510    150,
511    254,
512    138,
513    236,
514    205,
515    93,
516    222,
517    114,
518    67,
519    29,
520    24,
521    72,
522    243,
523    141,
524    128,
525    195,
526    78,
527    66,
528    215,
529    61,
530    156,
531    180,
532];
533
534/// The different mouse events that can be the result of user input.
535#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
536pub enum MouseButton {
537    Left,
538    Right,
539    Middle,
540    Button4,
541    Button5,
542    Button6,
543    Button7,
544    Button8,
545}
546
547impl From<MouseButton> for glutin::MouseButton {
548    fn from(btn: MouseButton) -> Self {
549        match btn {
550            MouseButton::Left => glutin::MouseButton::Left,
551            MouseButton::Right => glutin::MouseButton::Right,
552            MouseButton::Middle => glutin::MouseButton::Middle,
553            MouseButton::Button4 => glutin::MouseButton::Other(4),
554            MouseButton::Button5 => glutin::MouseButton::Other(5),
555            MouseButton::Button6 => glutin::MouseButton::Other(6),
556            MouseButton::Button7 => glutin::MouseButton::Other(7),
557            MouseButton::Button8 => glutin::MouseButton::Other(8),
558        }
559    }
560}
561
562/// The different key events that can be the result of user input.
563#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
564pub enum Key {
565    Num1,
566    Num2,
567    Num3,
568    Num4,
569    Num5,
570    Num6,
571    Num7,
572    Num8,
573    Num9,
574    Num0,
575    A,
576    B,
577    C,
578    D,
579    E,
580    F,
581    G,
582    H,
583    I,
584    J,
585    K,
586    L,
587    M,
588    N,
589    O,
590    P,
591    Q,
592    R,
593    S,
594    T,
595    U,
596    V,
597    W,
598    X,
599    Y,
600    Z,
601    Escape,
602    F1,
603    F2,
604    F3,
605    F4,
606    F5,
607    F6,
608    F7,
609    F8,
610    F9,
611    F10,
612    F11,
613    F12,
614    F13,
615    F14,
616    F15,
617    Snapshot,
618    Scroll,
619    Pause,
620    Insert,
621    Home,
622    Delete,
623    End,
624    PageDown,
625    PageUp,
626    Left,
627    Up,
628    Right,
629    Down,
630    Back,
631    Return,
632    Space,
633    Compose,
634    Numlock,
635    Numpad0,
636    Numpad1,
637    Numpad2,
638    Numpad3,
639    Numpad4,
640    Numpad5,
641    Numpad6,
642    Numpad7,
643    Numpad8,
644    Numpad9,
645    AbntC1,
646    AbntC2,
647    Add,
648    Apostrophe,
649    Apps,
650    At,
651    Ax,
652    Backslash,
653    Calculator,
654    Capital,
655    Colon,
656    Comma,
657    Convert,
658    Decimal,
659    Divide,
660    Equals,
661    Grave,
662    Kana,
663    Kanji,
664    LAlt,
665    LBracket,
666    LControl,
667    //LMenu,
668    LShift,
669    LWin,
670    Mail,
671    MediaSelect,
672    MediaStop,
673    Minus,
674    Multiply,
675    Mute,
676    MyComputer,
677    NavigateForward,
678    NavigateBackward,
679    NextTrack,
680    NoConvert,
681    NumpadComma,
682    NumpadEnter,
683    NumpadEquals,
684    OEM102,
685    Period,
686    PlayPause,
687    Power,
688    PrevTrack,
689    RAlt,
690    RBracket,
691    RControl,
692    //RMenu,
693    RShift,
694    RWin,
695    Semicolon,
696    Slash,
697    Sleep,
698    Stop,
699    Subtract,
700    Sysrq,
701    Tab,
702    Underline,
703    Unlabeled,
704    VolumeDown,
705    VolumeUp,
706    Wake,
707    WebBack,
708    WebFavorites,
709    WebForward,
710    WebHome,
711    WebRefresh,
712    WebSearch,
713    WebStop,
714    Yen,
715}
716
717impl From<Key> for glutin::VirtualKeyCode {
718    fn from(btn: Key) -> Self {
719        match btn {
720            Key::Num1 => glutin::VirtualKeyCode::Key1,
721            Key::Num2 => glutin::VirtualKeyCode::Key2,
722            Key::Num3 => glutin::VirtualKeyCode::Key3,
723            Key::Num4 => glutin::VirtualKeyCode::Key4,
724            Key::Num5 => glutin::VirtualKeyCode::Key5,
725            Key::Num6 => glutin::VirtualKeyCode::Key6,
726            Key::Num7 => glutin::VirtualKeyCode::Key7,
727            Key::Num8 => glutin::VirtualKeyCode::Key8,
728            Key::Num9 => glutin::VirtualKeyCode::Key9,
729            Key::Num0 => glutin::VirtualKeyCode::Key0,
730            Key::A => glutin::VirtualKeyCode::A,
731            Key::B => glutin::VirtualKeyCode::B,
732            Key::C => glutin::VirtualKeyCode::C,
733            Key::D => glutin::VirtualKeyCode::D,
734            Key::E => glutin::VirtualKeyCode::E,
735            Key::F => glutin::VirtualKeyCode::F,
736            Key::G => glutin::VirtualKeyCode::G,
737            Key::H => glutin::VirtualKeyCode::H,
738            Key::I => glutin::VirtualKeyCode::I,
739            Key::J => glutin::VirtualKeyCode::J,
740            Key::K => glutin::VirtualKeyCode::K,
741            Key::L => glutin::VirtualKeyCode::L,
742            Key::M => glutin::VirtualKeyCode::M,
743            Key::N => glutin::VirtualKeyCode::N,
744            Key::O => glutin::VirtualKeyCode::O,
745            Key::P => glutin::VirtualKeyCode::P,
746            Key::Q => glutin::VirtualKeyCode::Q,
747            Key::R => glutin::VirtualKeyCode::R,
748            Key::S => glutin::VirtualKeyCode::S,
749            Key::T => glutin::VirtualKeyCode::T,
750            Key::U => glutin::VirtualKeyCode::U,
751            Key::V => glutin::VirtualKeyCode::V,
752            Key::W => glutin::VirtualKeyCode::W,
753            Key::X => glutin::VirtualKeyCode::X,
754            Key::Y => glutin::VirtualKeyCode::Y,
755            Key::Z => glutin::VirtualKeyCode::Z,
756            Key::Escape => glutin::VirtualKeyCode::Escape,
757            Key::F1 => glutin::VirtualKeyCode::F1,
758            Key::F2 => glutin::VirtualKeyCode::F2,
759            Key::F3 => glutin::VirtualKeyCode::F3,
760            Key::F4 => glutin::VirtualKeyCode::F4,
761            Key::F5 => glutin::VirtualKeyCode::F5,
762            Key::F6 => glutin::VirtualKeyCode::F6,
763            Key::F7 => glutin::VirtualKeyCode::F7,
764            Key::F8 => glutin::VirtualKeyCode::F8,
765            Key::F9 => glutin::VirtualKeyCode::F9,
766            Key::F10 => glutin::VirtualKeyCode::F10,
767            Key::F11 => glutin::VirtualKeyCode::F11,
768            Key::F12 => glutin::VirtualKeyCode::F12,
769            Key::F13 => glutin::VirtualKeyCode::F13,
770            Key::F14 => glutin::VirtualKeyCode::F14,
771            Key::F15 => glutin::VirtualKeyCode::F15,
772            Key::Snapshot => glutin::VirtualKeyCode::Snapshot,
773            Key::Scroll => glutin::VirtualKeyCode::Scroll,
774            Key::Pause => glutin::VirtualKeyCode::Pause,
775            Key::Insert => glutin::VirtualKeyCode::Insert,
776            Key::Home => glutin::VirtualKeyCode::Home,
777            Key::Delete => glutin::VirtualKeyCode::Delete,
778            Key::End => glutin::VirtualKeyCode::End,
779            Key::PageDown => glutin::VirtualKeyCode::PageDown,
780            Key::PageUp => glutin::VirtualKeyCode::PageUp,
781            Key::Left => glutin::VirtualKeyCode::Left,
782            Key::Up => glutin::VirtualKeyCode::Up,
783            Key::Right => glutin::VirtualKeyCode::Right,
784            Key::Down => glutin::VirtualKeyCode::Down,
785            Key::Back => glutin::VirtualKeyCode::Back,
786            Key::Return => glutin::VirtualKeyCode::Return,
787            Key::Space => glutin::VirtualKeyCode::Space,
788            Key::Compose => glutin::VirtualKeyCode::Compose,
789            Key::Numlock => glutin::VirtualKeyCode::Numlock,
790            Key::Numpad0 => glutin::VirtualKeyCode::Numpad0,
791            Key::Numpad1 => glutin::VirtualKeyCode::Numpad1,
792            Key::Numpad2 => glutin::VirtualKeyCode::Numpad2,
793            Key::Numpad3 => glutin::VirtualKeyCode::Numpad3,
794            Key::Numpad4 => glutin::VirtualKeyCode::Numpad4,
795            Key::Numpad5 => glutin::VirtualKeyCode::Numpad5,
796            Key::Numpad6 => glutin::VirtualKeyCode::Numpad6,
797            Key::Numpad7 => glutin::VirtualKeyCode::Numpad7,
798            Key::Numpad8 => glutin::VirtualKeyCode::Numpad8,
799            Key::Numpad9 => glutin::VirtualKeyCode::Numpad9,
800            Key::AbntC1 => glutin::VirtualKeyCode::AbntC1,
801            Key::AbntC2 => glutin::VirtualKeyCode::AbntC2,
802            Key::Add => glutin::VirtualKeyCode::Add,
803            Key::Apostrophe => glutin::VirtualKeyCode::Apostrophe,
804            Key::Apps => glutin::VirtualKeyCode::Apps,
805            Key::At => glutin::VirtualKeyCode::At,
806            Key::Ax => glutin::VirtualKeyCode::Ax,
807            Key::Backslash => glutin::VirtualKeyCode::Backslash,
808            Key::Calculator => glutin::VirtualKeyCode::Calculator,
809            Key::Capital => glutin::VirtualKeyCode::Capital,
810            Key::Colon => glutin::VirtualKeyCode::Colon,
811            Key::Comma => glutin::VirtualKeyCode::Comma,
812            Key::Convert => glutin::VirtualKeyCode::Convert,
813            Key::Decimal => glutin::VirtualKeyCode::Decimal,
814            Key::Divide => glutin::VirtualKeyCode::Divide,
815            Key::Equals => glutin::VirtualKeyCode::Equals,
816            Key::Grave => glutin::VirtualKeyCode::Grave,
817            Key::Kana => glutin::VirtualKeyCode::Kana,
818            Key::Kanji => glutin::VirtualKeyCode::Kanji,
819            Key::LAlt => glutin::VirtualKeyCode::LAlt,
820            Key::LBracket => glutin::VirtualKeyCode::LBracket,
821            Key::LControl => glutin::VirtualKeyCode::LControl,
822            //Key::LMenu => glutin::VirtualKeyCode::LMenu,
823            Key::LShift => glutin::VirtualKeyCode::LShift,
824            Key::LWin => glutin::VirtualKeyCode::LWin,
825            Key::Mail => glutin::VirtualKeyCode::Mail,
826            Key::MediaSelect => glutin::VirtualKeyCode::MediaSelect,
827            Key::MediaStop => glutin::VirtualKeyCode::MediaStop,
828            Key::Minus => glutin::VirtualKeyCode::Minus,
829            Key::Multiply => glutin::VirtualKeyCode::Multiply,
830            Key::Mute => glutin::VirtualKeyCode::Mute,
831            Key::MyComputer => glutin::VirtualKeyCode::MyComputer,
832            Key::NavigateForward => glutin::VirtualKeyCode::NavigateForward,
833            Key::NavigateBackward => glutin::VirtualKeyCode::NavigateBackward,
834            Key::NextTrack => glutin::VirtualKeyCode::NextTrack,
835            Key::NoConvert => glutin::VirtualKeyCode::NoConvert,
836            Key::NumpadComma => glutin::VirtualKeyCode::NumpadComma,
837            Key::NumpadEnter => glutin::VirtualKeyCode::NumpadEnter,
838            Key::NumpadEquals => glutin::VirtualKeyCode::NumpadEquals,
839            Key::OEM102 => glutin::VirtualKeyCode::OEM102,
840            Key::Period => glutin::VirtualKeyCode::Period,
841            Key::PlayPause => glutin::VirtualKeyCode::PlayPause,
842            Key::Power => glutin::VirtualKeyCode::Power,
843            Key::PrevTrack => glutin::VirtualKeyCode::PrevTrack,
844            Key::RAlt => glutin::VirtualKeyCode::RAlt,
845            Key::RBracket => glutin::VirtualKeyCode::RBracket,
846            Key::RControl => glutin::VirtualKeyCode::RControl,
847            //Key::RMenu => glutin::VirtualKeyCode::RMenu,
848            Key::RShift => glutin::VirtualKeyCode::RShift,
849            Key::RWin => glutin::VirtualKeyCode::RWin,
850            Key::Semicolon => glutin::VirtualKeyCode::Semicolon,
851            Key::Slash => glutin::VirtualKeyCode::Slash,
852            Key::Sleep => glutin::VirtualKeyCode::Sleep,
853            Key::Stop => glutin::VirtualKeyCode::Stop,
854            Key::Subtract => glutin::VirtualKeyCode::Subtract,
855            Key::Sysrq => glutin::VirtualKeyCode::Sysrq,
856            Key::Tab => glutin::VirtualKeyCode::Tab,
857            Key::Underline => glutin::VirtualKeyCode::Underline,
858            Key::Unlabeled => glutin::VirtualKeyCode::Unlabeled,
859            Key::VolumeDown => glutin::VirtualKeyCode::VolumeDown,
860            Key::VolumeUp => glutin::VirtualKeyCode::VolumeUp,
861            Key::Wake => glutin::VirtualKeyCode::Wake,
862            Key::WebBack => glutin::VirtualKeyCode::WebBack,
863            Key::WebFavorites => glutin::VirtualKeyCode::WebFavorites,
864            Key::WebForward => glutin::VirtualKeyCode::WebForward,
865            Key::WebHome => glutin::VirtualKeyCode::WebHome,
866            Key::WebRefresh => glutin::VirtualKeyCode::WebRefresh,
867            Key::WebSearch => glutin::VirtualKeyCode::WebSearch,
868            Key::WebStop => glutin::VirtualKeyCode::WebStop,
869            Key::Yen => glutin::VirtualKeyCode::Yen,
870        }
871    }
872}