Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region Beteenden, dvs metoder
- #region Allmänna metoder
- // Metod som tar emot en bokstav och hämtar fram
- // ritanvisningen för den bokstaven
- private string[] MakeDrawingFromLetter(string sLetterIn)
- {
- // En ritanvisning är 14 boxar hög
- string[] arrOut = new string[14];
- // Nu skall vi göra ritanvinsningar!
- // En ritanvinsning gäller en och endast en bokstav
- // Vi granskar därför först att vi har just exakt en
- // bokstav in
- if (sLetterIn.Length == 1)
- {
- // Nu vet vi att vi har en bokstav. Nu skall vi
- // i switch ta reda på vilken det är.
- // Saknas bokstaven träder default in, vilket är
- // ett schackmönster *med ram*
- // Obs ett schackmönster *utan ram* är vad som
- // returneras om sLetterIn inte är exakt ett tecken
- // Se else nedan för att finna schackmönster
- // utan ram
- switch (sLetterIn)
- {
- case " ":
- arrOut[0] = "0000";
- arrOut[1] = "0000";
- arrOut[2] = "0000";
- arrOut[3] = "0000";
- arrOut[4] = "0000";
- arrOut[5] = "0000";
- arrOut[6] = "0000";
- arrOut[7] = "0000";
- arrOut[8] = "0000";
- arrOut[9] = "0000";
- arrOut[10] = "0000";
- arrOut[11] = "0000";
- arrOut[12] = "0000";
- arrOut[13] = "0000";
- break;
- case "r":
- arrOut[0] = "00000000";
- arrOut[1] = "00000000";
- arrOut[2] = "00000000";
- arrOut[3] = "00000000";
- arrOut[4] = "00000000";
- arrOut[5] = "00000000";
- arrOut[6] = "00101100";
- arrOut[7] = "00110010";
- arrOut[8] = "00100000";
- arrOut[9] = "00100000";
- arrOut[10] = "00100000";
- arrOut[11] = "00100000";
- arrOut[12] = "00000000";
- arrOut[13] = "00000000";
- break;
- case "R":
- arrOut[0] = "00000000";
- arrOut[1] = "00000000";
- arrOut[2] = "00000000";
- arrOut[3] = "00111100";
- arrOut[4] = "01000010";
- arrOut[5] = "01000010";
- arrOut[6] = "01000010";
- arrOut[7] = "01111100";
- arrOut[8] = "01010000";
- arrOut[9] = "01001000";
- arrOut[10] = "01000100";
- arrOut[11] = "01000010";
- arrOut[12] = "00000000";
- arrOut[13] = "00000000";
- break;
- default:
- arrOut[0] = "11111111";
- arrOut[1] = "11010101";
- arrOut[2] = "10101011";
- arrOut[3] = "11010101";
- arrOut[4] = "10101011";
- arrOut[5] = "11010101";
- arrOut[6] = "10101011";
- arrOut[7] = "11010101";
- arrOut[8] = "10101011";
- arrOut[9] = "11010101";
- arrOut[10] = "10101011";
- arrOut[11] = "11010101";
- arrOut[12] = "10101011";
- arrOut[13] = "11111111";
- break;
- }
- }
- else
- {
- arrOut[0] = "10101010";
- arrOut[1] = "01010101";
- arrOut[2] = "10101010";
- arrOut[3] = "01010101";
- arrOut[4] = "10101010";
- arrOut[5] = "01010101";
- arrOut[6] = "10101010";
- arrOut[7] = "01010101";
- arrOut[8] = "10101010";
- arrOut[9] = "01010101";
- arrOut[10] = "10101010";
- arrOut[11] = "01010101";
- arrOut[12] = "10101010";
- arrOut[13] = "01010101";
- }
- return arrOut;
- }
- private string[] MakeTextRows(string sText)
- {
- // Det skall finnas 14 rader
- string[] arrOut = new string[14];
- // Gå igenom bokstäverna *en och en* och gör om
- // bokstäverna en och en till ritanvisningar
- for (int i = 0; i < sText.Length; i++)
- {
- // plocka ut bokstaven på positionen i
- // Substring hämtar en del av en sträng.
- // Substring(i,1) hämtar bokstaven på position i
- // och hämtar 1 bokstav. Substring(i,2) skulle hämtat
- // bokstaven på i plus följande bokstav
- string sAktuellBokstav = sText.Substring(i, 1); // Hämta bokstaven på plats 0, 1, 2 osv
- // Skicka bokstaven som argument till getLetterRow
- // och tag emot en ritanvisning om fjorton rader
- // för just den bokstaven
- string[] arrTemp = MakeDrawingFromLetter(sAktuellBokstav);
- // arrTemp har en ritning för den aktuella bokstaven
- // Denna ritning måste föras över till arrOut, som
- // skall vara ritningen för *hela* texten
- // Vi går därför igenom alla fjorton rader och för
- // varje rad i sOut lägger vi den ritanvisningen
- // till samma rad i arrRows
- for (int iRutRad = 0; iRutRad < 14; iRutRad++)
- {
- arrOut[iRutRad] = arrOut[iRutRad] + arrTemp[iRutRad];
- }
- }
- // En text skall ha en viss längd om vi skall rulla texten
- // Av det skälet måste vi se till att varje enskild rad
- // har exakt rätt längd. Detta görs i metoden
- // SetCorrectLengthOfRow
- for (int iRow = 0; iRow < 14; iRow++)
- {
- arrOut[iRow] = SetCorrectLengthOfRow(arrOut[iRow]);
- }
- return arrOut;
- }
- // En metod behövs för att se till att en ritanvisning är
- // exakt så lång som
- private string SetCorrectLengthOfRow(string sIn)
- {
- // för att dynamiskt sätta rätt längd på en ritanvisning
- // dvs en längd passande reklamrutans faktiska bredd
- // så hämtar vi dess bredd i pixlar.
- double dPixlar = m_iAdvertSize;
- // En bokstav består av rutor som är fyra pixlar breda
- // därför är antalet rutor antalet pixlar genom fyra
- double dRutor = dPixlar / 4;
- // Antalet målrutor kan vid avrundning med (int) dRutor
- // bli 1 ruta för kort. Därför avrundar vi och lägger på
- // en etta för säkerhets skull
- int iAntalRutorSomMal = 1 + (int)dRutor; // Gör dRutor till heltal men lägg på ett för att börja scrollning utanför
- string sOut = sIn; // Denna variabel skall returneras
- // Nu vet vi vårt mål. sOut får snurra runt i denna
- // loop tills dess längd är mållängden
- while (sOut.Length < iAntalRutorSomMal)
- {
- sOut = sOut + "0"; // lägg på svart ruta
- }
- return sOut;
- }
- // Metod för Tickning. Vid tickning scrollar vi
- public void Tick()
- {
- Scroll(); // Rullar text om texten har scrollriktning
- }
- #endregion
- #region Metoder för scrollning
- // Metod som rullar text
- private void Scroll()
- {
- if (m_iScrollDirection == -1)
- {
- ScrollLeft();
- }
- if (m_iScrollDirection == 1)
- {
- ScrollRight();
- }
- }
- private void ScrollLeft()
- {
- // Gå igenom alla rader i ritanvisningen
- for (int iRow = 0; iRow < 14; iRow++)
- {
- // Shifta varje rad ett snäpp vänster
- m_arrRows[iRow] = ShiftLeft(m_arrRows[iRow]);
- }
- }
- private string ShiftLeft(string sIn)
- {
- // För att flytta hämtar vi ut första rutan separat
- string sFirstBox = sIn.Substring(0, 1);
- // därefter hämtar vi ut resten av rutorna, vilket vi
- // får genom Substring(1), dvs genom att inte ange
- // antalet tecken så får vi resten
- string sLastBoxes = sIn.Substring(1);
- // Returnera strängen med första boxen sist
- return sLastBoxes + sFirstBox;
- }
- private void ScrollRight()
- {
- for (int iRow = 0; iRow < 14; iRow++)
- {
- m_arrRows[iRow] = ShiftRight(m_arrRows[iRow]);
- }
- }
- private string ShiftRight(string sIn)
- {
- string sFirstboxes = sIn.Substring(0);
- string sLastBox = sIn.Substring(1,1);
- return sLastBox + sFirstboxes;
- }
- #endregion
- #region Region för XML-hantering
- private int PlockaUtIntVardeUrXml(XmlNode xmlIn)
- {
- int iOut = 0;
- string sTemp = xmlIn.InnerText.ToString();
- if (sTemp != "")
- {
- // Försök göra om till heltal
- try
- {
- iOut = int.Parse(sTemp);
- }
- catch (Exception ex)
- {
- // Felhantering kommer men än så länge bara MessageBox
- System.Windows.Forms.MessageBox.Show("Fel (datatyp?) på " + xmlIn.Name);
- }
- }
- return iOut;
- }
- private string PlockaUtTextVardeUrXml(XmlNode xmlIn)
- {
- return xmlIn.InnerText.ToString();
- }
- #endregion
- #endregion
- }
- }
Add Comment
Please, Sign In to add comment