source: trunk/CrypPlugins/Enigma/Rotor2.cs @ 2701

Last change on this file since 2701 was 2701, checked in by weyers, 11 years ago

EnigmaPresentation Settings synchronisation and start on play update and bugfixes, Pictures updated as .png, Rotor2 synchronisation update, Reflector bugfix

File size: 51.0 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.Windows;
6using System.Windows.Controls;
7using System.Windows.Data;
8using System.Windows.Documents;
9using System.Windows.Input;
10using System.Windows.Media;
11using System.Windows.Media.Imaging;
12using System.Windows.Navigation;
13using System.Windows.Shapes;
14using System.Windows.Media.Animation;
15using System.Threading;
16using System.Xaml;
17
18namespace Cryptool.Enigma
19{
20
21
22    class Rotor2 : Canvas
23    {
24        double width;
25        double height;
26        public readonly int map;
27        List<TextBlock> tebo = new List<TextBlock>();
28        List<TextBlock> tebo2 = new List<TextBlock>();
29        Line[] lines = new Line[26];
30        TextBlock custom = new TextBlock();
31        TextBlock custom2 = new TextBlock();
32        Canvas lineCanvas = new Canvas();
33        Line lineToAnimat = new Line();
34        Line lineToAnimat2 = new Line();
35        List<Line> lineTrash = new List<Line>();
36        TextBlock[] textBlockToAnimat = new TextBlock[2];
37        TextBlock[] textBlockToAnimat2 = new TextBlock[2];
38
39        public TextBlock iAm = new TextBlock();
40
41        public Boolean anomalie = false;
42
43        public double fast = 400;
44
45        public Boolean next = false;
46        Boolean rotated = false;
47        int nextint = 0;
48
49        public int[,] maparray = new int[26, 2];
50
51        int einsnext = 16;
52        int zweinext = 4;
53        int dreinext = 21;
54        int viernext = 9;
55        int fuenfnext = 25;
56
57        int[] eins = new int[] { 4, 10, 12, 5, 11, 6, 3, 16, 21, 25, 13, 19, 14, 22, 24, 7, 23, 20, 18, 15, 0, 8, 1, 17, 2, 9 };
58        int[] zwei = new int[] { 0, 9, 3, 10, 18, 8, 17, 20, 23, 1, 11, 7, 22, 19, 12, 2, 16, 6, 25, 13, 15, 24, 5, 21, 14, 4 };
59        int[] drei = new int[] { 1, 3, 5, 7, 9, 11, 2, 15, 17, 19, 23, 21, 25, 13, 24, 4, 8, 22, 6, 0, 10, 12, 20, 18, 16, 14 };
60        int[] vier = new int[] { 4, 18, 14, 21, 15, 25, 9, 0, 24, 16, 20, 8, 17, 7, 23, 11, 13, 5, 19, 6, 10, 3, 2, 12, 22, 1 };
61        int[] fuenf = new int[] { 21, 25, 1, 17, 6, 8, 19, 24, 20, 15, 18, 3, 13, 7, 11, 23, 0, 22, 12, 9, 16, 14, 5, 4, 2, 10 };
62
63        public void changeoffset(int offset)
64        {
65
66        }
67
68
69
70        public int returnMap()
71        {
72            return map;
73        }
74
75        public Rotor2(int map, double width, double height, int offset, int ringoffset)
76        {
77
78
79            StackPanel s = new StackPanel();
80            s.Orientation = Orientation.Vertical;
81
82            this.width = width;
83            this.height = height;
84            this.map = map+1;
85
86
87            this.Children.Add(alpha(offset,ringoffset-1));
88        }
89
90        public int mapto(int x, Boolean off)
91        {
92
93
94            int help = 0;
95
96
97            lineToAnimat = lines[maparray[x, 0]];
98            textBlockToAnimat[0] = tebo[maparray[x, 0]];
99            textBlockToAnimat[1] = tebo2[maparray[x, 1]];
100            rotated = false;
101
102            if (off)
103            {
104                tebo[x].Background = Brushes.Green;
105                tebo2[maparray[x, 1]].Background = Brushes.Green;
106                //tebo[x].Text = "ä";
107                lines[x].Stroke = Brushes.Green;
108                lines[x].Opacity = 1.0;
109            }
110            return maparray[x, 1];
111        }
112
113        public int maptoreverse(int y, Boolean off)
114        {
115            int help = 0;
116            for (int x = 0; x < maparray.GetLength(0); x++)
117            {
118                if (maparray[x, 1] == y)
119                    help = x;
120
121            }
122
123            // tebo[help].Background = Brushes.Red;
124            //lines[help].Stroke = Brushes.Red;
125            //lines[help].Opacity = 1.0;
126
127            textBlockToAnimat2[1] = tebo2[maparray[y, 0]];
128            textBlockToAnimat2[0] = tebo[help];
129
130            lineToAnimat2 = lines[help];
131            if (off)
132            {
133                tebo2[y].Background = Brushes.Red;
134                tebo[help].Background = Brushes.Red;
135                //tebo[x].Text = "ä";
136                lines[help].Stroke = Brushes.Red;
137                lines[help].Opacity = 1.0;
138            }
139            return help;
140        }
141
142        public void startAnimation()
143        {
144
145            animateThisTebo(textBlockToAnimat[0], true);
146
147        }
148
149        public void startAnimationReverse()
150        {
151
152            animateThisTebo2(textBlockToAnimat2[1], true);
153
154
155        }
156
157        private void helpNextAnimationMethod13(object sender, EventArgs e)
158        {
159            animateThisLine2(lineToAnimat2);
160        }
161
162        private void helpNextAnimationMethod14(object sender, EventArgs e)
163        {
164            helpNextAnimation2(this, EventArgs.Empty);
165        }
166
167        private void helpNextAnimationMethod1(object sender, EventArgs e)
168        {
169            animateThisLine(lineToAnimat);
170        }
171
172        private void helpNextAnimationMethod12(object sender, EventArgs e)
173        {
174            helpNextAnimation(this, EventArgs.Empty);
175        }
176
177        private void helpNextAnimationMethod2(object sender, EventArgs e)
178        {
179            animateThisTebo2(textBlockToAnimat2[0], false);
180
181
182        }
183
184        private void helpNextAnimationMethod(object sender, EventArgs e)
185        {
186            animateThisTebo(textBlockToAnimat[1], false);
187
188        }
189
190        public event EventHandler helpNextAnimation;
191        public event EventHandler helpNextAnimation2;
192
193
194
195        private void animateThisTebo(TextBlock tebo, Boolean b)
196        {
197            SolidColorBrush brush = new SolidColorBrush();
198            brush.Color = Colors.Transparent;
199
200            ColorAnimation colorAni = new ColorAnimation();
201            string s = tebo.Text;
202            colorAni.From = Colors.Gainsboro;
203            if (tebo.Background == Brushes.Silver)
204                colorAni.From = Colors.Silver;
205            colorAni.To = Colors.YellowGreen;
206            colorAni.Duration = new Duration(TimeSpan.FromMilliseconds(fast));
207            if (b)
208                colorAni.Completed += helpNextAnimationMethod1;
209            else
210                colorAni.Completed += helpNextAnimationMethod12;
211
212            tebo.Background = brush;
213            //  tebo.Background = Brushes.HotPink;
214            brush.BeginAnimation(SolidColorBrush.ColorProperty, colorAni);
215        }
216
217        private void animateThisTebo2(TextBlock tebo, Boolean b)
218        {
219            SolidColorBrush brush = new SolidColorBrush();
220            brush.Color = Colors.Transparent;
221
222            ColorAnimation colorAni = new ColorAnimation();
223            string s = tebo.Text;
224            colorAni.From = Colors.Gainsboro;
225            if (tebo.Background == Brushes.Silver)
226                colorAni.From = Colors.Silver;
227            colorAni.To = Colors.Tomato;
228            colorAni.Duration = new Duration(TimeSpan.FromMilliseconds(fast));
229
230            if (b)
231                colorAni.Completed += helpNextAnimationMethod13;
232            else
233                colorAni.Completed += helpNextAnimationMethod14;
234
235            tebo.Background = brush;
236
237            brush.BeginAnimation(SolidColorBrush.ColorProperty, colorAni);
238        }
239
240        private void animateThisLine2(Line l)
241        {
242
243
244
245            Line l1 = new Line();
246
247            Canvas.SetLeft(l, Canvas.GetLeft(l));
248
249            Canvas.SetTop(l, Canvas.GetTop(l));
250
251            l1.StrokeThickness = 5.0;
252            l1.Stroke = Brushes.Tomato;
253
254
255            l1.X1 = l.X2;
256            l1.X2 = l.X2;
257            DoubleAnimation mydouble1 = new DoubleAnimation();
258            if (rotated)
259            {
260                l1.Y1 = l.Y2 - 30;
261                l1.Y2 = l.Y2 - 30;
262
263
264                mydouble1.From = l.Y2 - 30;
265                mydouble1.To = l.Y1 - 30;
266                double abst = Math.Sqrt(Math.Pow(l.X2 - l.X1, 2) + Math.Pow(l.Y2 - l.Y1, 2));
267                if (abst == 0)
268                    abst = 1;
269
270                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((abst * fast)));
271
272            }
273            else
274            {
275                l1.Y1 = l.Y2;
276                l1.Y2 = l.Y2;
277
278
279                mydouble1.From = l.Y2;
280                mydouble1.To = l.Y1;
281                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
282
283            }
284
285            DoubleAnimation mydouble = new DoubleAnimation();
286            mydouble.From = l.X2;
287            mydouble.To = l.X1;
288            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
289            mydouble.Completed += helpNextAnimationMethod2;
290
291
292            lineCanvas.Children.Add(l1);
293
294            l1.BeginAnimation(Line.X2Property, mydouble);
295            l1.BeginAnimation(Line.Y2Property, mydouble1);
296
297            lineTrash.Add(l1);
298        }
299
300        private void animateThisLine(Line l)
301        {
302
303            //resetColors();
304
305            Line l1 = new Line();
306
307            Canvas.SetLeft(l, Canvas.GetLeft(l));
308
309            Canvas.SetTop(l, Canvas.GetTop(l));
310
311            l1.StrokeThickness = 5.0;
312            l1.Stroke = Brushes.LawnGreen;
313
314
315            l1.X1 = l.X1;
316            l1.X2 = l.X1;
317            DoubleAnimation mydouble1 = new DoubleAnimation();
318            if (rotated)
319            {
320                l1.Y1 = l.Y1 - 30;
321                l1.Y2 = l.Y1 - 30;
322
323
324                mydouble1.From = l.Y1 - 30;
325                mydouble1.To = l.Y2 - 30;
326
327                double abst = Math.Sqrt(Math.Pow(l.X2 - l.X1, 2) + Math.Pow(l.Y2 - l.Y1, 2));
328                if (abst == 0)
329                    abst = 1;
330                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((abst * fast)));
331
332            }
333            else
334            {
335                l1.Y1 = l.Y1;
336                l1.Y2 = l.Y1;
337
338
339                mydouble1.From = l.Y1;
340                mydouble1.To = l.Y2;
341                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
342
343            }
344
345            DoubleAnimation mydouble = new DoubleAnimation();
346            mydouble.From = l.X1;
347            mydouble.To = l.X2;
348            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
349            mydouble.Completed += helpNextAnimationMethod;
350
351
352            lineCanvas.Children.Add(l1);
353
354            l1.BeginAnimation(Line.X2Property, mydouble);
355            l1.BeginAnimation(Line.Y2Property, mydouble1);
356
357            lineTrash.Add(l1);
358        }
359
360        public void coloring(Brush brush, int x)
361        {
362
363        }
364
365
366
367        private void helpdownererclick(object sender, EventArgs e)
368        {
369
370            DoubleAnimation mydouble = new DoubleAnimation();
371            mydouble.From = 30.0;
372            mydouble.To = 60.0;
373            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
374            //mydouble.RepeatBehavior = RepeatBehavior.Forever;
375
376            DoubleAnimation mydouble1 = new DoubleAnimation();
377            mydouble1.From = -30.0;
378            mydouble1.To = 0.0;
379            mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
380            //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
381            DoubleAnimation mydouble3 = new DoubleAnimation();
382            mydouble3.From = 0.0;
383            mydouble3.To = 1.0;
384            mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
385
386            DoubleAnimation mydouble4 = new DoubleAnimation();
387            mydouble4.From = 0.0;
388            mydouble4.To = 1.0;
389            mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
390
391            custom.BeginAnimation(OpacityProperty, mydouble4);
392
393            tebo[25].BeginAnimation(OpacityProperty, mydouble3);
394            tebo2[25].BeginAnimation(OpacityProperty, mydouble3);
395
396            stack.Children.RemoveAt(0);
397            stack1.Children.RemoveAt(0);
398
399
400            stack.BeginAnimation(Canvas.TopProperty, mydouble);
401            stack1.BeginAnimation(Canvas.TopProperty, mydouble);
402            lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
403
404
405            char c = custom.Text[0];
406            int ix = (int)c - 65;
407            if (ix > 0)
408                ix = ix - 1;
409            else
410                ix = 25;
411
412
413            custom.Text = Convert.ToChar(ix + 65) + "";
414
415            TextBlock dummy = tebo[25];
416            tebo.RemoveAt(25);
417            tebo.Insert(0, dummy);
418
419            TextBlock dummy2 = tebo2[25];
420            tebo2.RemoveAt(25);
421            tebo2.Insert(0, dummy2);
422
423            stack.Children.RemoveAt(25);
424            stack.Children.Insert(0, dummy);
425
426
427            stack1.Children.RemoveAt(25);
428            stack1.Children.Insert(0, dummy2);
429
430            derotate();
431            b = true;
432        }
433
434        private void downerclick(object sender, EventArgs e)
435        {
436            if (b)
437            {
438                resetColors();
439                b = false;
440                DoubleAnimation mydouble = new DoubleAnimation();
441                mydouble.From = 31.0;
442                mydouble.To = 60.0;
443                mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
444                //mydouble.RepeatBehavior = RepeatBehavior.Forever;
445
446                DoubleAnimation mydouble1 = new DoubleAnimation();
447                mydouble1.From = 0.0;
448                mydouble1.To = 30.0;
449                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
450                //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
451
452                DoubleAnimation mydouble2 = new DoubleAnimation();
453                mydouble2.From = 0.0;
454                mydouble2.To = 1.0;
455                mydouble2.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
456
457
458
459                DoubleAnimation mydouble3 = new DoubleAnimation();
460                mydouble3.From = 1.0;
461                mydouble3.To = 0.0;
462                mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
463
464                DoubleAnimation mydouble4 = new DoubleAnimation();
465                mydouble4.From = 850.0;
466                mydouble4.To = 50.0;
467                mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
468
469                mydouble1.Completed += helpdownererclick;
470                TextBlock dummy = cloneTextBlock(tebo[25]);
471
472                TextBlock dummy2 = cloneTextBlock(tebo2[25]);
473
474
475                Line l = new Line();
476                l = this.cloneLine(lines[0]);
477
478                //stack.Children.Add(dummy);
479                stack.Children.Insert(0, dummy);
480                //stack1.Children.Add(dummy2);
481                stack1.Children.Insert(0, dummy2);
482                tebo[25].BeginAnimation(OpacityProperty, mydouble3);
483                tebo2[25].BeginAnimation(OpacityProperty, mydouble3);
484                custom.BeginAnimation(OpacityProperty, mydouble3);
485
486                dummy.BeginAnimation(OpacityProperty, mydouble2);
487                dummy2.BeginAnimation(OpacityProperty, mydouble2);
488
489                lines[25].BeginAnimation(Line.Y1Property, mydouble4);
490
491                for (int i = 0; i < maparray.GetLength(0); i++)
492                    if (maparray[i, 1] == 25)
493                        lines[i].BeginAnimation(Line.Y2Property, mydouble4);
494
495                stack.BeginAnimation(Canvas.TopProperty, mydouble);
496
497                stack1.BeginAnimation(Canvas.TopProperty, mydouble);
498
499                lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
500            }
501        }
502
503
504        private void helpdownererclick1(object sender, EventArgs e)
505        {
506
507            DoubleAnimation mydouble = new DoubleAnimation();
508            mydouble.From = 30.0;
509            mydouble.To = 60.0;
510            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
511            //mydouble.RepeatBehavior = RepeatBehavior.Forever;
512
513            DoubleAnimation mydouble1 = new DoubleAnimation();
514            mydouble1.From = -30.0;
515            mydouble1.To = 0.0;
516            mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
517            //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
518            DoubleAnimation mydouble3 = new DoubleAnimation();
519            mydouble3.From = 0.0;
520            mydouble3.To = 1.0;
521            mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
522
523            DoubleAnimation mydouble4 = new DoubleAnimation();
524            mydouble4.From = 0.0;
525            mydouble4.To = 1.0;
526            mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
527
528            custom2.BeginAnimation(OpacityProperty, mydouble4);
529
530            tebo[25].BeginAnimation(OpacityProperty, mydouble3);
531            //tebo2[25].BeginAnimation(OpacityProperty, mydouble3);
532
533            stack.Children.RemoveAt(0);
534            //stack1.Children.RemoveAt(0);
535
536
537            stack.BeginAnimation(Canvas.TopProperty, mydouble);
538            //stack1.BeginAnimation(Canvas.TopProperty, mydouble);
539            lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
540
541            TextBlock dummy = tebo[25];
542            tebo.RemoveAt(25);
543            tebo.Insert(0, dummy);
544
545            stack.Children.RemoveAt(25);
546            stack.Children.Insert(0, dummy);
547
548
549            int x = Int32.Parse(custom2.Text);
550            if (x != 26)
551                custom2.Text = "" + (x + 1);
552            else
553                custom2.Text = 1 + "";
554
555
556            derotate();
557            for (int i = 0; i < tebo.Count; i++)
558            {
559                if (tebo[i].FontWeight == FontWeights.UltraBold)
560                {
561                    if (i == 0)
562                    {
563                        tebo[25].Foreground = Brushes.Red;
564                        tebo[25].FontWeight = FontWeights.UltraBold;
565                        tebo[0].FontWeight = FontWeights.Normal;
566                        tebo[0].Foreground = Brushes.Black;
567                        break;
568                    }
569                    else if (i <= 25 && i > 0)
570                    {
571                        tebo[i - 1].Foreground = Brushes.Red;
572                        tebo[i - 1].FontWeight = FontWeights.UltraBold;
573                        tebo[i].FontWeight = FontWeights.Normal;
574                        tebo[i].Foreground = Brushes.Black;
575                    }
576
577                }
578            }
579            b = true;
580        }
581
582        public void downerclick1(object sender, EventArgs e)
583        {
584            if (b)
585            {
586                resetColors();
587                b = false;
588                DoubleAnimation mydouble = new DoubleAnimation();
589                mydouble.From = 31.0;
590                mydouble.To = 60.0;
591                mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
592                //mydouble.RepeatBehavior = RepeatBehavior.Forever;
593
594                DoubleAnimation mydouble1 = new DoubleAnimation();
595                mydouble1.From = 0.0;
596                mydouble1.To = 30.0;
597                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
598                //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
599
600                DoubleAnimation mydouble2 = new DoubleAnimation();
601                mydouble2.From = 0.0;
602                mydouble2.To = 1.0;
603                mydouble2.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
604
605
606
607                DoubleAnimation mydouble3 = new DoubleAnimation();
608                mydouble3.From = 1.0;
609                mydouble3.To = 0.0;
610                mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
611
612                DoubleAnimation mydouble4 = new DoubleAnimation();
613                mydouble4.From = 850.0;
614                mydouble4.To = 50.0;
615                mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
616
617                mydouble1.Completed += helpdownererclick1;
618                TextBlock dummy = cloneTextBlock(tebo[25]);
619
620                TextBlock dummy2 = cloneTextBlock(tebo2[25]);
621
622
623
624                Line l = new Line();
625                l = this.cloneLine(lines[0]);
626
627                //stack.Children.Add(dummy);
628                stack.Children.Insert(0, dummy);
629                //stack1.Children.Add(dummy2);
630                //stack1.Children.Insert(0, dummy2);
631                tebo[25].BeginAnimation(OpacityProperty, mydouble3);
632                //tebo2[25].BeginAnimation(OpacityProperty, mydouble3);
633                custom2.BeginAnimation(OpacityProperty, mydouble3);
634
635                dummy.BeginAnimation(OpacityProperty, mydouble2);
636                //dummy2.BeginAnimation(OpacityProperty, mydouble2);
637
638                lines[25].BeginAnimation(Line.Y1Property, mydouble4);
639
640                for (int i = 0; i < maparray.GetLength(0); i++)
641                    if (maparray[i, 1] == 25)
642                        lines[i].BeginAnimation(Line.Y2Property, mydouble4);
643
644                stack.BeginAnimation(Canvas.TopProperty, mydouble);
645
646                //stack1.BeginAnimation(Canvas.TopProperty, mydouble);
647
648                lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
649            }
650
651        }
652
653
654        public void derotate()
655        {
656
657
658
659            next = false;
660            if (tebo2[0].Text[0] == Convert.ToChar(nextint + 65))
661            {
662                next = true;
663            }
664            //int dummy = maparray[0,0];
665            int dummy1 = maparray[25, 1];
666
667            for (int i = 25; i > 0; i--)
668            {
669                //  maparray[i,0] = maparray[i + 1, 0];
670                if (maparray[i - 1, 1] == 25)
671                    maparray[i, 1] = 0;
672                else
673                    maparray[i, 1] = maparray[i - 1, 1] + 1;
674            }
675
676            //maparray[maparray.GetLength(0) - 1, 0] = dummy;
677            if (dummy1 == 25)
678                maparray[0, 1] = 0;
679            else
680                maparray[0, 1] = dummy1 + 1;
681
682
683
684
685
686            foreach (Line l in lines)
687            {
688                lineCanvas.Children.Remove(l);
689            }
690            for (int i = 0; i < 26; i++)
691            {
692                Line t1 = new Line();
693                t1.X1 = 170;
694                t1.Y1 = 29.4 * i + 75;
695                t1.Opacity = 0.5;
696                t1.X2 = 30;
697                t1.Y2 = 0;
698
699                t1.Stroke = Brushes.Black;
700
701                t1.Y2 = 29.4 * maparray[i, 1] + 75;
702
703                lines[i] = t1;
704                lineCanvas.Children.Add(t1);
705            }
706        }
707
708        private void helpupperclick(object sender, EventArgs e)
709        {
710
711            DoubleAnimation mydouble = new DoubleAnimation();
712            mydouble.From = 30.0;
713            mydouble.To = 60.0;
714            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
715            //mydouble.RepeatBehavior = RepeatBehavior.Forever;
716
717            DoubleAnimation mydouble1 = new DoubleAnimation();
718            mydouble1.From = -30.0;
719            mydouble1.To = 0.0;
720            mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
721            //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
722
723            DoubleAnimation mydouble3 = new DoubleAnimation();
724            mydouble3.From = 0.0;
725            mydouble3.To = 1.0;
726            mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
727            tebo[0].BeginAnimation(OpacityProperty, mydouble3);
728            tebo2[0].BeginAnimation(OpacityProperty, mydouble3);
729
730            DoubleAnimation mydouble4 = new DoubleAnimation();
731            mydouble4.From = 0.0;
732            mydouble4.To = 1.0;
733            mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
734
735            custom.BeginAnimation(OpacityProperty, mydouble4);
736
737            //stack.Children.RemoveAt(26);
738            //stack1.Children.RemoveAt(26);
739
740
741            stack.BeginAnimation(Canvas.TopProperty, mydouble);
742            stack1.BeginAnimation(Canvas.TopProperty, mydouble);
743            lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
744
745
746            char c = custom.Text[0];
747            int ix = (int)c - 65;
748            ix = (ix + 1) % 26;
749
750            custom.Text = Convert.ToChar(ix + 65) + "";
751
752            TextBlock dummy = cloneTextBlock(tebo[0]);
753            tebo.RemoveAt(0);
754            tebo.Add((TextBlock)stack.Children[26]);
755            //tebo.Insert(25, dummy);
756
757            TextBlock dummy2 = cloneTextBlock(tebo2[0]);
758            tebo2.RemoveAt(0);
759            tebo2.Add((TextBlock)stack1.Children[26]);
760            //tebo2.Insert(25,dummy2);
761
762            stack.Children.RemoveAt(0);
763            //stack.Children.Add(dummy);
764
765            stack1.Children.RemoveAt(0);
766            //stack1.Children.Add(dummy2);
767
768
769
770            rotate();
771
772            b = true;
773
774        }
775        Boolean b = true;
776        public void upperclick(object sender, EventArgs e)
777        {
778            //int dummy = maparray[0,0];
779
780            if (b)
781            {
782                int dummy1 = maparray[0, 1];
783
784
785                for (int i = 0; i < maparray.GetLength(0) - 1; i++)
786                {
787                    //  maparray[i,0] = maparray[i + 1, 0];
788                    if (maparray[i + 1, 1] == 0)
789                        maparray[i, 1] = 25;
790                    else
791                        maparray[i, 1] = maparray[i + 1, 1] - 1;
792                }
793
794                //maparray[maparray.GetLength(0) - 1, 0] = dummy;
795                if (dummy1 == 0)
796                    maparray[maparray.GetLength(0) - 1, 1] = 25;
797                else
798                    maparray[maparray.GetLength(0) - 1, 1] = dummy1 - 1;
799
800
801                resetColors();
802                b = false;
803                DoubleAnimation mydouble = new DoubleAnimation();
804                mydouble.From = 60.0;
805                mydouble.To = 31.0;
806                mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
807                //mydouble.RepeatBehavior = RepeatBehavior.Forever;
808
809                DoubleAnimation mydouble1 = new DoubleAnimation();
810                mydouble1.From = 0.0;
811                mydouble1.To = -30.0;
812                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
813                //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
814
815                DoubleAnimation mydouble2 = new DoubleAnimation();
816                mydouble2.From = 0.0;
817                mydouble2.To = 1.0;
818                mydouble2.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
819
820                DoubleAnimation mydouble3 = new DoubleAnimation();
821                mydouble3.From = 1.0;
822                mydouble3.To = 0.0;
823                mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
824
825                DoubleAnimation mydouble4 = new DoubleAnimation();
826                mydouble4.From = 75;
827                mydouble4.To = 850.0;
828                mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
829
830                mydouble1.Completed += helpupperclick;
831                TextBlock dummy = cloneTextBlock(tebo[0]);
832
833                TextBlock dummy2 = cloneTextBlock(tebo2[0]);
834
835
836
837
838                Line l = new Line();
839                l = this.cloneLine(lines[0]);
840
841                stack.Children.Add(dummy);
842                stack1.Children.Add(dummy2);
843                tebo[0].BeginAnimation(OpacityProperty, mydouble3);
844                tebo2[0].BeginAnimation(OpacityProperty, mydouble3);
845                custom.BeginAnimation(OpacityProperty, mydouble3);
846
847                dummy.BeginAnimation(OpacityProperty, mydouble2);
848                dummy2.BeginAnimation(OpacityProperty, mydouble2);
849
850                lines[0].BeginAnimation(Line.Y1Property, mydouble4);
851
852                for (int i = 0; i < maparray.GetLength(0); i++)
853                    if (maparray[i, 1] == 25)
854                        if (i + 1 != 26)
855                            lines[i + 1].BeginAnimation(Line.Y2Property, mydouble4);
856                        else
857                            lines[0].BeginAnimation(Line.Y2Property, mydouble4);
858
859
860                stack.BeginAnimation(Canvas.TopProperty, mydouble);
861
862                stack1.BeginAnimation(Canvas.TopProperty, mydouble);
863
864                lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
865            }
866        }
867
868        private Line cloneLine(Line l)
869        {
870            Line l1 = new Line();
871            l1.Stroke = l.Stroke;
872            l1.X1 = l.X1;
873            l1.X2 = l.X2;
874            l1.Y1 = l.Y1;
875            l1.Y2 = l.Y2;
876            return l1;
877        }
878
879        private TextBlock cloneTextBlock(TextBlock t)
880        {
881            TextBlock dummy = new TextBlock();
882            dummy.Text = t.Text;
883            dummy.Background = t.Background;
884            dummy.Height = t.Height;
885            dummy.Width = t.Width;
886            dummy.FontSize = t.FontSize;
887            dummy.TextAlignment = t.TextAlignment;
888            dummy.Foreground = t.Foreground;
889            dummy.FontWeight = t.FontWeight;
890            return dummy;
891        }
892        private void helpupperclick1(object sender, EventArgs e)
893        {
894            DoubleAnimation mydouble = new DoubleAnimation();
895            mydouble.From = 30.0;
896            mydouble.To = 60.0;
897            mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
898            //mydouble.RepeatBehavior = RepeatBehavior.Forever;
899
900            DoubleAnimation mydouble1 = new DoubleAnimation();
901            mydouble1.From = -30.0;
902            mydouble1.To = 0.0;
903            mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
904            //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
905
906            DoubleAnimation mydouble3 = new DoubleAnimation();
907            mydouble3.From = 0.0;
908            mydouble3.To = 1.0;
909            mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((0)));
910            tebo[0].BeginAnimation(OpacityProperty, mydouble3);
911            tebo2[0].BeginAnimation(OpacityProperty, mydouble3);
912
913            DoubleAnimation mydouble4 = new DoubleAnimation();
914            mydouble4.From = 0.0;
915            mydouble4.To = 1.0;
916            mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
917
918            custom2.BeginAnimation(OpacityProperty, mydouble4);
919
920            stack.Children.RemoveAt(26);
921            //stack1.Children.RemoveAt(26);
922
923
924            stack.BeginAnimation(Canvas.TopProperty, mydouble);
925            stack1.BeginAnimation(Canvas.TopProperty, mydouble);
926            lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
927
928            TextBlock dummy = tebo[0];
929            tebo.RemoveAt(0);
930            tebo.Add(dummy);
931
932            stack.Children.RemoveAt(0);
933            stack.Children.Add(dummy);
934
935
936            int x = Int32.Parse(custom2.Text);
937            if (x != 1)
938                custom2.Text = "" + (x - 1);
939            else
940                custom2.Text = 26 + "";
941
942
943            //int dummy = maparray[0,0];
944            int dummy1 = maparray[0, 1];
945
946
947            for (int i = 0; i < maparray.GetLength(0) - 1; i++)
948            {
949                //  maparray[i,0] = maparray[i + 1, 0];
950                if (maparray[i + 1, 1] == 0)
951                    maparray[i, 1] = 25;
952                else
953                    maparray[i, 1] = maparray[i + 1, 1] - 1;
954            }
955
956            //maparray[maparray.GetLength(0) - 1, 0] = dummy;
957            if (dummy1 == 0)
958                maparray[maparray.GetLength(0) - 1, 1] = 25;
959            else
960                maparray[maparray.GetLength(0) - 1, 1] = dummy1 - 1;
961
962            rotate();
963
964            for (int i = tebo.Count - 1; i > -1; i--)
965            {
966                if (tebo[i].FontWeight == FontWeights.UltraBold)
967                {
968                    if (i == 0)
969                    {
970                        tebo[0].Foreground = Brushes.Red;
971                        tebo[0].FontWeight = FontWeights.UltraBold;
972                        tebo[1].FontWeight = FontWeights.Normal;
973                        tebo[1].Foreground = Brushes.Black;
974                    }
975                    else if (i != 25)
976                    {
977                        tebo[i + 1].Foreground = Brushes.Red;
978                        tebo[i + 1].FontWeight = FontWeights.UltraBold;
979                        tebo[i].FontWeight = FontWeights.Normal;
980                        tebo[i].Foreground = Brushes.Black;
981                    }
982
983                    else
984                    {
985                        tebo[0].Foreground = Brushes.Red;
986                        tebo[0].FontWeight = FontWeights.UltraBold;
987                        tebo[25].FontWeight = FontWeights.Normal;
988                        tebo[25].Foreground = Brushes.Black;
989
990                    }
991                }
992            }
993            b = true;
994        }
995
996        public void upperclick1(object sender, EventArgs e)
997        {
998
999            if (b)
1000            {
1001
1002                resetColors();
1003                b = false;
1004                DoubleAnimation mydouble = new DoubleAnimation();
1005                mydouble.From = 60.0;
1006                mydouble.To = 31.0;
1007                mydouble.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
1008                //mydouble.RepeatBehavior = RepeatBehavior.Forever;
1009
1010                DoubleAnimation mydouble1 = new DoubleAnimation();
1011                mydouble1.From = 0.0;
1012                mydouble1.To = -30.0;
1013                mydouble1.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
1014                //mydouble1.RepeatBehavior = RepeatBehavior.Forever;
1015
1016                DoubleAnimation mydouble2 = new DoubleAnimation();
1017                mydouble2.From = 0.0;
1018                mydouble2.To = 1.0;
1019                mydouble2.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
1020
1021                DoubleAnimation mydouble3 = new DoubleAnimation();
1022                mydouble3.From = 1.0;
1023                mydouble3.To = 0.0;
1024                mydouble3.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
1025
1026                DoubleAnimation mydouble4 = new DoubleAnimation();
1027                mydouble4.From = 100.0;
1028                mydouble4.To = 850.0;
1029                mydouble4.Duration = new Duration(TimeSpan.FromMilliseconds((fast)));
1030
1031                mydouble1.Completed += helpupperclick1;
1032                TextBlock dummy = cloneTextBlock(tebo[0]);
1033
1034                TextBlock dummy2 = cloneTextBlock(tebo2[0]);
1035
1036
1037
1038
1039                Line l = new Line();
1040                l = this.cloneLine(lines[0]);
1041
1042                stack.Children.Add(dummy);
1043                //stack1.Children.Add(dummy2);
1044                tebo[0].BeginAnimation(OpacityProperty, mydouble3);
1045                //tebo2[0].BeginAnimation(OpacityProperty, mydouble3);
1046                custom2.BeginAnimation(OpacityProperty, mydouble3);
1047
1048                dummy.BeginAnimation(OpacityProperty, mydouble2);
1049                //dummy2.BeginAnimation(OpacityProperty, mydouble2);
1050
1051                lines[0].BeginAnimation(Line.Y1Property, mydouble4);
1052
1053                for (int i = 0; i < maparray.GetLength(0); i++)
1054                    if (maparray[i, 1] == 0)
1055                        lines[i].BeginAnimation(Line.Y2Property, mydouble4);
1056
1057                stack.BeginAnimation(Canvas.TopProperty, mydouble);
1058
1059                //stack1.BeginAnimation(Canvas.TopProperty, mydouble);
1060
1061                lineCanvas.BeginAnimation(Canvas.TopProperty, mydouble1);
1062
1063            }
1064        }
1065
1066        public void rotate()
1067        {
1068
1069            next = false;
1070            rotated = true;
1071            if (tebo2[0].Text[0] == Convert.ToChar(nextint + 65))
1072            {
1073                next = true;
1074            }
1075
1076            foreach (Line l in lines)
1077            {
1078                lineCanvas.Children.Remove(l);
1079            }
1080
1081            for (int i = 0; i < 26; i++)
1082            {
1083                Line t1 = new Line();
1084                t1.X1 = 170;
1085                t1.Y1 = 29.4 * i + 75;
1086                t1.Opacity = 0.5;
1087                t1.X2 = 30;
1088                t1.Y2 = 0;
1089
1090                t1.Stroke = Brushes.Black;
1091
1092                t1.Y2 = 29.4 * maparray[i, 1] + 75;
1093
1094                lines[i] = t1;
1095                lineCanvas.Children.Add(t1);
1096            }
1097
1098        }
1099
1100        public void resetColors()
1101        {
1102            foreach (Line l in lineTrash)
1103                lineCanvas.Children.Remove(l);
1104
1105            lineTrash.Clear();
1106
1107
1108            if (Int32.Parse(tebo[0].Text) % 2 == 0)
1109                for (int i = 0; i < tebo.Count; i++)
1110                {
1111                    tebo[i].Background = Brushes.Silver;
1112
1113                    if (i % 2 == 0)
1114                        tebo[i].Background = Brushes.Gainsboro;
1115
1116
1117                }
1118            else
1119                for (int i = 0; i < tebo.Count; i++)
1120                {
1121                    tebo[i].Background = Brushes.Gainsboro;
1122
1123                    if (i % 2 == 0)
1124                        tebo[i].Background = Brushes.Silver;
1125                }
1126
1127            if ((int)tebo2[0].Text[0] % 2 == 0)
1128                for (int i = 0; i < tebo2.Count; i++)
1129                {
1130                    tebo2[i].Background = Brushes.Silver;
1131
1132                    if (i % 2 == 0)
1133                        tebo2[i].Background = Brushes.Gainsboro;
1134
1135
1136                }
1137            else
1138                for (int i = 0; i < tebo.Count; i++)
1139                {
1140                    tebo2[i].Background = Brushes.Gainsboro;
1141
1142                    if (i % 2 == 0)
1143                        tebo2[i].Background = Brushes.Silver;
1144                }
1145
1146
1147
1148            for (int i = 0; i < lines.GetLength(0); i++)
1149            {
1150                lines[i].Stroke = Brushes.Black;
1151                lines[i].Opacity = 0.5;
1152                if (i % 2 == 0)
1153                    lines[i].Stroke = Brushes.Black;
1154            }
1155
1156            //System.GC.Collect();
1157        }
1158
1159
1160        StackPanel stack = new StackPanel();
1161        StackPanel stack1 = new StackPanel();
1162        StackPanel stack2 = new StackPanel();
1163
1164
1165        private Canvas alpha(int offset, int ringoffset)
1166        {
1167
1168            Rectangle myRectangle = new Rectangle();
1169            myRectangle.Width = 200;
1170            myRectangle.Height = 890;
1171
1172            myRectangle.RadiusX = 15;
1173            myRectangle.RadiusY = 15;
1174
1175            myRectangle.Fill = Brushes.LightSteelBlue;
1176            myRectangle.Stroke = Brushes.Silver;
1177            myRectangle.StrokeThickness = 30;
1178
1179            Rectangle walzeDisplay = new Rectangle();
1180            walzeDisplay.Width = 50;
1181            walzeDisplay.Height = 50;
1182
1183            walzeDisplay.RadiusX = 5;
1184            walzeDisplay.RadiusY = 5;
1185
1186            walzeDisplay.Fill = Brushes.Silver;
1187            walzeDisplay.Stroke = Brushes.Silver;
1188            walzeDisplay.StrokeThickness = 30;
1189
1190
1191            stack.Orientation = Orientation.Vertical;
1192
1193
1194            stack1.Orientation = Orientation.Vertical;
1195
1196
1197            stack2.Orientation = Orientation.Horizontal;
1198
1199            Canvas.SetTop(stack1, 60);
1200            Canvas.SetLeft(stack1, 0);
1201
1202
1203            Canvas.SetTop(stack, 60);
1204            Canvas.SetLeft(stack, 170);
1205
1206            Canvas temp = new Canvas();
1207
1208            temp.Children.Add(walzeDisplay);
1209
1210            temp.Children.Add(myRectangle);
1211            temp.Children.Add(lineCanvas);
1212
1213            int max = 26;
1214            int rest = 26 - offset;
1215
1216            for (int i = offset; i < max; i++)
1217            {
1218               
1219                int inew = (i-offset +ringoffset)%26;
1220                TextBlock t = new TextBlock();
1221                t.Text = "" + ((26-i+ringoffset)%26+1);
1222                t.Width = 29.4;
1223                t.Height = 29.4;
1224
1225
1226                t.FontSize = 20;
1227                t.Background = Brushes.Gainsboro;
1228                t.TextAlignment = TextAlignment.Center;
1229                if (i % 2 == 0)
1230                    t.Background = Brushes.Silver;
1231                if (i == 0)
1232                {
1233                    t.FontWeight = FontWeights.UltraBold;
1234                    t.Foreground = Brushes.OrangeRed;
1235                    t.FontSize = 22;
1236
1237                }
1238
1239
1240                stack.Children.Add(t);
1241
1242                tebo.Add(t);
1243
1244                TextBlock t2 = new TextBlock();
1245                t2.Text = "" + Convert.ToChar(i + 65);
1246                t2.Width = 29.4;
1247                t2.Height = 29.4;
1248
1249
1250                t2.FontSize = 20;
1251                t2.Background = Brushes.Gainsboro;
1252                t2.TextAlignment = TextAlignment.Center;
1253                if (i % 2 == 0)
1254                    t2.Background = Brushes.Silver;
1255
1256
1257
1258                stack1.Children.Add(t2);
1259
1260                tebo2.Add(t2);
1261
1262                Line t1 = new Line();
1263                t1.X1 = 170;
1264                t1.Y1 = 29.4 * inew + 75;
1265                t1.Opacity = 0.5;
1266                t1.X2 = 30;
1267                t1.Y2 = 0;
1268
1269                t1.Stroke = Brushes.Black;
1270
1271
1272
1273                maparray[inew, 0] = inew;
1274                switch (map)
1275                {
1276                    case 1:
1277                        maparray[inew, 1] = ((eins[i] + rest + ringoffset) % 26);
1278                        t1.Y2 = 29.4 * ((eins[i] + rest +ringoffset) % 26) + 75;
1279                        iAm.Text = "I";
1280                        nextint = einsnext;
1281                        if (offset == nextint)
1282                            next = true;
1283                        break;
1284
1285                    case 2:
1286                        maparray[inew, 1] = (zwei[i] + rest + ringoffset) % 26;
1287                        t1.Y2 = 29.4 * ((zwei[i] + rest + ringoffset) % 26) + 75;
1288                        nextint = zweinext;
1289                        iAm.Text = "II";
1290                        if (offset == nextint)
1291                            next = true;
1292                        break;
1293                    case 3:
1294                        maparray[inew, 1] = (drei[i] + rest + ringoffset) % 26;
1295                        t1.Y2 = 29.4 * ((drei[i] + rest + ringoffset) % 26) + 75;
1296                        nextint = dreinext;
1297                        iAm.Text = "III";
1298                        if (offset == nextint)
1299                            next = true;
1300                        break;
1301                    case 4:
1302                        maparray[inew, 1] = (vier[i] + rest + ringoffset) % 26;
1303                        t1.Y2 = 29.4 * ((vier[i] + rest + ringoffset) % 26) + 75;
1304                        nextint = viernext;
1305                        iAm.Text = "IV";
1306                        if (offset == nextint)
1307                            next = true;
1308                        break;
1309                    case 5:
1310                        maparray[inew, 1] = (fuenf[i] + rest + ringoffset) % 26;
1311                        t1.Y2 = 29.4 * ((fuenf[i] + rest + ringoffset) % 26) + 75;
1312                        nextint = fuenfnext;
1313                        iAm.Text = "V";
1314                        if (offset == nextint)
1315                            next = true;
1316                        if (i == 0)
1317                        {
1318                            t2.Foreground = Brushes.OrangeRed;
1319                            t2.FontWeight = FontWeights.UltraBold;
1320                            t2.FontSize = 22;
1321                        }
1322                        break;
1323
1324                }
1325
1326                lines[inew] = t1;
1327
1328
1329
1330                if (i == nextint + 1)
1331                {
1332                    t2.FontWeight = FontWeights.UltraBold;
1333                    t2.Foreground = Brushes.OrangeRed;
1334                    t2.FontSize = 22;
1335                }
1336
1337
1338                lineCanvas.Children.Add(t1);
1339
1340            }
1341
1342            for (int i = 0; i < offset; i++)
1343            {
1344                int inew = (i + rest+ringoffset)%26;
1345
1346                TextBlock t = new TextBlock();
1347                t.Text = "" + ((26 - i +ringoffset) % 26 + 1);
1348                t.Width = 29.4;
1349                t.Height = 29.4;
1350
1351
1352                t.FontSize = 20;
1353                t.Background = Brushes.Gainsboro;
1354                t.TextAlignment = TextAlignment.Center;
1355                if (i % 2 == 0)
1356                    t.Background = Brushes.Silver;
1357                if (i == 0)
1358                {
1359                    t.FontWeight = FontWeights.UltraBold;
1360                    t.Foreground = Brushes.OrangeRed;
1361                    t.FontSize = 22;
1362
1363                }
1364
1365
1366                stack.Children.Add(t);
1367
1368                tebo.Add(t);
1369
1370                TextBlock t2 = new TextBlock();
1371                t2.Text = "" + Convert.ToChar(i + 65);
1372                t2.Width = 29.4;
1373                t2.Height = 29.4;
1374
1375
1376                t2.FontSize = 20;
1377                t2.Background = Brushes.Gainsboro;
1378                t2.TextAlignment = TextAlignment.Center;
1379                if (i % 2 == 0)
1380                    t2.Background = Brushes.Silver;
1381
1382
1383
1384                stack1.Children.Add(t2);
1385
1386                tebo2.Add(t2);
1387
1388                Line t1 = new Line();
1389                t1.X1 = 170;
1390                t1.Y1 = 29.4 * ((i - offset + 26 +ringoffset )%26) + 75;
1391                t1.Opacity = 0.5;
1392                t1.X2 = 30;
1393                t1.Y2 = 0;
1394
1395                t1.Stroke = Brushes.Black;
1396
1397
1398
1399                maparray[inew , 0] = inew ;
1400                switch (map)
1401                {
1402                    case 1:
1403                        maparray[inew, 1] = ((eins[i] + rest + ringoffset) % 26);
1404                        t1.Y2 = 29.4 * ((eins[i] + rest+ringoffset) % 26) + 75;
1405                        iAm.Text = "I";
1406                        nextint = einsnext;
1407                        break;
1408
1409                    case 2:
1410                        maparray[inew, 1] = ((zwei[i] + rest + ringoffset) % 26);
1411                        t1.Y2 = 29.4 * ((zwei[i] + rest + ringoffset) % 26) + 75;
1412                        nextint = zweinext;
1413                        iAm.Text = "II";
1414                        break;
1415                    case 3:
1416                        maparray[inew, 1] = (drei[i] + rest + ringoffset) % 26;
1417                        t1.Y2 = 29.4 * ((drei[i] + rest + ringoffset) % 26) + 75;
1418                        nextint = dreinext;
1419                        iAm.Text = "III";
1420                        break;
1421                    case 4:
1422                        maparray[inew, 1] = (vier[i] + rest + ringoffset) % 26;
1423                        t1.Y2 = 29.4 * ((vier[i] + rest + ringoffset) % 26) + 75;
1424                        nextint = viernext;
1425                        iAm.Text = "IV";
1426                        break;
1427                    case 5:
1428                        maparray[inew, 1] = (fuenf[i] + rest + ringoffset) % 26;
1429                        t1.Y2 = 29.4 * ((fuenf[i] + rest + ringoffset) % 26) + 75;
1430                        nextint = fuenfnext;
1431                        iAm.Text = "V";
1432                        if (i == 0)
1433                        {
1434                            t2.Foreground = Brushes.OrangeRed;
1435                            t2.FontWeight = FontWeights.UltraBold;
1436                            t2.FontSize = 22;
1437                        }
1438                        break;
1439
1440                }
1441                lines[inew] = t1;
1442
1443
1444
1445                if (i == nextint + 1)
1446                {
1447                    t2.FontWeight = FontWeights.UltraBold;
1448                    t2.Foreground = Brushes.OrangeRed;
1449                    t2.FontSize = 22;
1450                }
1451
1452
1453                lineCanvas.Children.Add(t1);
1454
1455            }
1456
1457            temp.Children.Add(stack1);
1458            temp.Children.Add(stack);
1459
1460            Button up = new Button();
1461            up.Click += upperclick;
1462            up.Height = 50;
1463            up.Width = 50;
1464            up.Content = "UP";
1465            Canvas.SetLeft(up, 25);
1466            Canvas.SetTop(up, 5);
1467
1468            Button down = new Button();
1469            down.Click += downerclick;
1470            down.Height = 50;
1471            down.Width = 50;
1472            down.Content = "Down";
1473            Canvas.SetLeft(down, 125);
1474            Canvas.SetTop(down, 5);
1475
1476            custom.Text = "" + Convert.ToChar(offset+65) ;
1477
1478            custom.Height = 50;
1479            custom.Width = 50;
1480            custom.FontSize = 40;
1481            custom.TextAlignment = TextAlignment.Center;
1482            Canvas.SetLeft(custom, 75);
1483            Canvas.SetTop(custom, 5);
1484
1485
1486
1487            Rectangle k = new Rectangle();
1488            k.RadiusX = 5;
1489            k.RadiusY = 5;
1490            k.Height = 40;
1491            k.Width = 40;
1492            k.Opacity = 1.0;
1493            k.StrokeThickness = 3.0;
1494            k.Stroke = Brushes.RoyalBlue;
1495            k.Fill = Brushes.Silver;
1496            Canvas.SetTop(k, 13);
1497            Canvas.SetLeft(k, 80);
1498
1499            temp.Children.Add(k);
1500
1501            Rectangle k1 = new Rectangle();
1502            k1.RadiusX = 5;
1503            k1.RadiusY = 5;
1504            k1.Height = 30;
1505            k1.Width = 30;
1506            k1.Opacity = 1.0;
1507            k1.StrokeThickness = 3.0;
1508            k1.Stroke = Brushes.RoyalBlue;
1509            //k.Fill = Brushes.DimGray;
1510            Canvas.SetTop(k1, 60);
1511            Canvas.SetLeft(k1, 0);
1512
1513            temp.Children.Add(k1);
1514
1515
1516
1517
1518
1519            Line lx = new Line();
1520            lx.X1 = 100;
1521            lx.Y1 = 54;
1522            lx.Opacity = 1;
1523            lx.X2 = 100;
1524            lx.Y2 = 70;
1525            lx.StrokeThickness = 3.0;
1526            lx.Stroke = Brushes.RoyalBlue;
1527
1528            temp.Children.Add(lx);
1529
1530            Line lx1 = new Line();
1531            lx1.X1 = 100;
1532            lx1.Y1 = 70;
1533            lx1.Opacity = 1;
1534            lx1.X2 = 30;
1535            lx1.Y2 = 70;
1536            lx1.StrokeThickness = 3.0;
1537            lx1.Stroke = Brushes.RoyalBlue;
1538
1539            temp.Children.Add(lx1);
1540
1541            temp.Children.Add(custom);
1542            temp.Children.Add(up);
1543            temp.Children.Add(down);
1544
1545            Button up1 = new Button();
1546            up1.Click += upperclick1;
1547            up1.Height = 50;
1548            up1.Width = 50;
1549            up1.Content = "UP";
1550            Canvas.SetLeft(up1, 25);
1551            Canvas.SetTop(up1, 830);
1552
1553            Button down1 = new Button();
1554            down1.Click += downerclick1;
1555            down1.Height = 50;
1556            down1.Width = 50;
1557            down1.Content = "Down";
1558            Canvas.SetTop(down1, 830);
1559            Canvas.SetLeft(down1, 125);
1560
1561            custom2.Text = ""+(ringoffset+1);
1562
1563            custom2.Height = 50;
1564            custom2.Width = 50;
1565            custom2.FontSize = 40;
1566            custom2.TextAlignment = TextAlignment.Center;
1567
1568            Canvas.SetLeft(custom2, 75);
1569            Canvas.SetTop(custom2, 830);
1570
1571            temp.Children.Add(custom2);
1572            temp.Children.Add(up1);
1573            temp.Children.Add(down1);
1574
1575
1576            iAm.Height = 50;
1577            iAm.Width = 50;
1578            iAm.FontSize = 30;
1579            iAm.TextAlignment = TextAlignment.Center;
1580            Canvas.SetLeft(iAm, -30);
1581            Canvas.SetTop(iAm, 5);
1582            iAm.Background = Brushes.Orange;
1583            iAm.Uid = "" + map;
1584            temp.Children.Add(iAm);
1585
1586            return temp;
1587        }
1588    }
1589}
Note: See TracBrowser for help on using the repository browser.