Guest User

Untitled

a guest
Jul 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.65 KB | None | 0 0
  1. #region Beteenden, dvs metoder
  2. #region Allmänna metoder
  3. // Metod som tar emot en bokstav och hämtar fram
  4. // ritanvisningen för den bokstaven
  5. private string[] MakeDrawingFromLetter(string sLetterIn)
  6. {
  7. // En ritanvisning är 14 boxar hög
  8. string[] arrOut = new string[14];
  9.  
  10. // Nu skall vi göra ritanvinsningar!
  11.  
  12. // En ritanvinsning gäller en och endast en bokstav
  13. // Vi granskar därför först att vi har just exakt en
  14. // bokstav in
  15. if (sLetterIn.Length == 1)
  16. {
  17. // Nu vet vi att vi har en bokstav. Nu skall vi
  18. // i switch ta reda på vilken det är.
  19. // Saknas bokstaven träder default in, vilket är
  20. // ett schackmönster *med ram*
  21. // Obs ett schackmönster *utan ram* är vad som
  22. // returneras om sLetterIn inte är exakt ett tecken
  23. // Se else nedan för att finna schackmönster
  24. // utan ram
  25. switch (sLetterIn)
  26. {
  27. case " ":
  28. arrOut[0] = "0000";
  29. arrOut[1] = "0000";
  30. arrOut[2] = "0000";
  31. arrOut[3] = "0000";
  32. arrOut[4] = "0000";
  33. arrOut[5] = "0000";
  34. arrOut[6] = "0000";
  35. arrOut[7] = "0000";
  36. arrOut[8] = "0000";
  37. arrOut[9] = "0000";
  38. arrOut[10] = "0000";
  39. arrOut[11] = "0000";
  40. arrOut[12] = "0000";
  41. arrOut[13] = "0000";
  42. break;
  43. case "r":
  44. arrOut[0] = "00000000";
  45. arrOut[1] = "00000000";
  46. arrOut[2] = "00000000";
  47. arrOut[3] = "00000000";
  48. arrOut[4] = "00000000";
  49. arrOut[5] = "00000000";
  50. arrOut[6] = "00101100";
  51. arrOut[7] = "00110010";
  52. arrOut[8] = "00100000";
  53. arrOut[9] = "00100000";
  54. arrOut[10] = "00100000";
  55. arrOut[11] = "00100000";
  56. arrOut[12] = "00000000";
  57. arrOut[13] = "00000000";
  58. break;
  59. case "R":
  60. arrOut[0] = "00000000";
  61. arrOut[1] = "00000000";
  62. arrOut[2] = "00000000";
  63. arrOut[3] = "00111100";
  64. arrOut[4] = "01000010";
  65. arrOut[5] = "01000010";
  66. arrOut[6] = "01000010";
  67. arrOut[7] = "01111100";
  68. arrOut[8] = "01010000";
  69. arrOut[9] = "01001000";
  70. arrOut[10] = "01000100";
  71. arrOut[11] = "01000010";
  72. arrOut[12] = "00000000";
  73. arrOut[13] = "00000000";
  74. break;
  75.  
  76. default:
  77.  
  78. arrOut[0] = "11111111";
  79. arrOut[1] = "11010101";
  80. arrOut[2] = "10101011";
  81. arrOut[3] = "11010101";
  82. arrOut[4] = "10101011";
  83. arrOut[5] = "11010101";
  84. arrOut[6] = "10101011";
  85. arrOut[7] = "11010101";
  86. arrOut[8] = "10101011";
  87. arrOut[9] = "11010101";
  88. arrOut[10] = "10101011";
  89. arrOut[11] = "11010101";
  90. arrOut[12] = "10101011";
  91. arrOut[13] = "11111111";
  92. break;
  93. }
  94. }
  95. else
  96. {
  97.  
  98. arrOut[0] = "10101010";
  99. arrOut[1] = "01010101";
  100. arrOut[2] = "10101010";
  101. arrOut[3] = "01010101";
  102. arrOut[4] = "10101010";
  103. arrOut[5] = "01010101";
  104. arrOut[6] = "10101010";
  105. arrOut[7] = "01010101";
  106. arrOut[8] = "10101010";
  107. arrOut[9] = "01010101";
  108. arrOut[10] = "10101010";
  109. arrOut[11] = "01010101";
  110. arrOut[12] = "10101010";
  111. arrOut[13] = "01010101";
  112. }
  113. return arrOut;
  114. }
  115.  
  116. private string[] MakeTextRows(string sText)
  117. {
  118. // Det skall finnas 14 rader
  119. string[] arrOut = new string[14];
  120.  
  121. // Gå igenom bokstäverna *en och en* och gör om
  122. // bokstäverna en och en till ritanvisningar
  123. for (int i = 0; i < sText.Length; i++)
  124. {
  125. // plocka ut bokstaven på positionen i
  126. // Substring hämtar en del av en sträng.
  127. // Substring(i,1) hämtar bokstaven på position i
  128. // och hämtar 1 bokstav. Substring(i,2) skulle hämtat
  129. // bokstaven på i plus följande bokstav
  130. string sAktuellBokstav = sText.Substring(i, 1); // Hämta bokstaven på plats 0, 1, 2 osv
  131.  
  132. // Skicka bokstaven som argument till getLetterRow
  133. // och tag emot en ritanvisning om fjorton rader
  134. // för just den bokstaven
  135. string[] arrTemp = MakeDrawingFromLetter(sAktuellBokstav);
  136.  
  137. // arrTemp har en ritning för den aktuella bokstaven
  138. // Denna ritning måste föras över till arrOut, som
  139. // skall vara ritningen för *hela* texten
  140. // Vi går därför igenom alla fjorton rader och för
  141. // varje rad i sOut lägger vi den ritanvisningen
  142. // till samma rad i arrRows
  143. for (int iRutRad = 0; iRutRad < 14; iRutRad++)
  144. {
  145. arrOut[iRutRad] = arrOut[iRutRad] + arrTemp[iRutRad];
  146. }
  147. }
  148.  
  149. // En text skall ha en viss längd om vi skall rulla texten
  150. // Av det skälet måste vi se till att varje enskild rad
  151. // har exakt rätt längd. Detta görs i metoden
  152. // SetCorrectLengthOfRow
  153. for (int iRow = 0; iRow < 14; iRow++)
  154. {
  155. arrOut[iRow] = SetCorrectLengthOfRow(arrOut[iRow]);
  156. }
  157.  
  158. return arrOut;
  159. }
  160.  
  161. // En metod behövs för att se till att en ritanvisning är
  162. // exakt så lång som
  163. private string SetCorrectLengthOfRow(string sIn)
  164. {
  165. // för att dynamiskt sätta rätt längd på en ritanvisning
  166. // dvs en längd passande reklamrutans faktiska bredd
  167. // så hämtar vi dess bredd i pixlar.
  168. double dPixlar = m_iAdvertSize;
  169.  
  170. // En bokstav består av rutor som är fyra pixlar breda
  171. // därför är antalet rutor antalet pixlar genom fyra
  172. double dRutor = dPixlar / 4;
  173.  
  174. // Antalet målrutor kan vid avrundning med (int) dRutor
  175. // bli 1 ruta för kort. Därför avrundar vi och lägger på
  176. // en etta för säkerhets skull
  177. int iAntalRutorSomMal = 1 + (int)dRutor; // Gör dRutor till heltal men lägg på ett för att börja scrollning utanför
  178.  
  179. string sOut = sIn; // Denna variabel skall returneras
  180.  
  181. // Nu vet vi vårt mål. sOut får snurra runt i denna
  182. // loop tills dess längd är mållängden
  183. while (sOut.Length < iAntalRutorSomMal)
  184. {
  185. sOut = sOut + "0"; // lägg på svart ruta
  186. }
  187.  
  188. return sOut;
  189. }
  190.  
  191. // Metod för Tickning. Vid tickning scrollar vi
  192. public void Tick()
  193. {
  194. Scroll(); // Rullar text om texten har scrollriktning
  195. }
  196. #endregion
  197.  
  198. #region Metoder för scrollning
  199. // Metod som rullar text
  200. private void Scroll()
  201. {
  202. if (m_iScrollDirection == -1)
  203. {
  204. ScrollLeft();
  205. }
  206. if (m_iScrollDirection == 1)
  207. {
  208. ScrollRight();
  209. }
  210. }
  211.  
  212. private void ScrollLeft()
  213. {
  214. // Gå igenom alla rader i ritanvisningen
  215. for (int iRow = 0; iRow < 14; iRow++)
  216. {
  217. // Shifta varje rad ett snäpp vänster
  218. m_arrRows[iRow] = ShiftLeft(m_arrRows[iRow]);
  219. }
  220. }
  221.  
  222. private string ShiftLeft(string sIn)
  223. {
  224. // För att flytta hämtar vi ut första rutan separat
  225. string sFirstBox = sIn.Substring(0, 1);
  226.  
  227. // därefter hämtar vi ut resten av rutorna, vilket vi
  228. // får genom Substring(1), dvs genom att inte ange
  229. // antalet tecken så får vi resten
  230. string sLastBoxes = sIn.Substring(1);
  231.  
  232. // Returnera strängen med första boxen sist
  233. return sLastBoxes + sFirstBox;
  234. }
  235.  
  236. private void ScrollRight()
  237. {
  238. for (int iRow = 0; iRow < 14; iRow++)
  239. {
  240. m_arrRows[iRow] = ShiftRight(m_arrRows[iRow]);
  241. }
  242. }
  243.  
  244. private string ShiftRight(string sIn)
  245. {
  246.  
  247. string sFirstboxes = sIn.Substring(0);
  248.  
  249. string sLastBox = sIn.Substring(1,1);
  250.  
  251. return sLastBox + sFirstboxes;
  252. }
  253. #endregion
  254.  
  255.  
  256. #region Region för XML-hantering
  257. private int PlockaUtIntVardeUrXml(XmlNode xmlIn)
  258. {
  259. int iOut = 0;
  260. string sTemp = xmlIn.InnerText.ToString();
  261. if (sTemp != "")
  262. {
  263. // Försök göra om till heltal
  264. try
  265. {
  266. iOut = int.Parse(sTemp);
  267. }
  268. catch (Exception ex)
  269. {
  270. // Felhantering kommer men än så länge bara MessageBox
  271. System.Windows.Forms.MessageBox.Show("Fel (datatyp?) på " + xmlIn.Name);
  272. }
  273. }
  274. return iOut;
  275. }
  276.  
  277. private string PlockaUtTextVardeUrXml(XmlNode xmlIn)
  278. {
  279. return xmlIn.InnerText.ToString();
  280. }
  281. #endregion
  282. #endregion
  283. }
  284. }
Add Comment
Please, Sign In to add comment