Dimenticare

createHTMLSurface

Jul 8th, 2015
431
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var html, i, j, str, c, c2, sw, lineHeight;
  2. surface=surface_create(1280, 720);
  3. html=argument0;
  4.  
  5. surface_set_target(surface);
  6. draw_set_color(c_white);
  7. draw_rectangle(0, 0, 1280, 720, false);
  8. draw_set_color(c_black);
  9.  
  10. sh=32;
  11. lineHeight=0;
  12. for (i=0; i<ds_list_size(html.page); i+=1){
  13.     str=ds_list_find_value(html.page, i);
  14.     sw=0;
  15.     sh+=lineHeight+4;
  16.     lineHeight=0;
  17.     for (j=1; j<=string_length(str); j+=1){
  18.         c=string_char_at(str, j);
  19.         if (c=="\"){
  20.             // Ignore the rest of the line
  21.         } else if (c=="<"){
  22.             // Start a tag
  23.             c="";
  24.             while (j<string_length(str)){
  25.                 j+=1;
  26.                 c2=string_char_at(str, j);
  27.                 if (c2==">")
  28.                     break;
  29.                 else
  30.                     c+=c2;
  31.                
  32.             }
  33.             var terms;
  34.             terms=string_split(string_lower(c), "=");
  35.             c=de(terms);
  36.             if (string_char_at(c, 1)=="/"){
  37.                 c=string_copy(c, 2, string_length(c)-1);
  38.                 switch (c){
  39.                     case "p":
  40.                         // i really don't remember why I decided I needed this
  41.                         break;
  42.                     case "i":
  43.                         isItalic=false;
  44.                         break;
  45.                     case "u":
  46.                         isUnderlined=false;
  47.                         break;
  48.                     case "strike":
  49.                         isStrike=false;
  50.                         break;
  51.                     case "b":
  52.                         isBold=false;
  53.                         break;
  54.                     case "h1":
  55.                         draw_set_font(FontDefault);
  56.                         draw_set_color(c_black);
  57.                         break;
  58.                     case "planewalker":
  59.                         draw_set_font(FontDefault);
  60.                         break;
  61.                     case "color":
  62.                         draw_set_color(c_black);
  63.                         break;
  64.                     case "sup":
  65.                         verticalOffset=0;
  66.                         break;
  67.                     case "sub":
  68.                         verticalOffset=0;
  69.                         break;
  70.                 }
  71.             } else {
  72.                 switch (c){
  73.                     case "p":
  74.                         // i really don't remember why I decided I needed this
  75.                         break;
  76.                     case "i":
  77.                         isItalic=355; // degree slant of italic text
  78.                         break;
  79.                     case "u":
  80.                         isUnderlined=true;
  81.                         break;
  82.                     case "strike":
  83.                         isStrike=true;
  84.                         break;
  85.                     case "b":
  86.                         isBold=true;
  87.                         break;
  88.                     case "h1":
  89.                         draw_set_font(FontH1);
  90.                         draw_set_color(c_blue);
  91.                         break;
  92.                     case "planewalker":
  93.                         draw_set_font(FontPlanewalker);
  94.                         break;
  95.                     case "color":
  96.                         setHTMLColor(de(terms));
  97.                         break;
  98.                     case "sup":
  99.                         verticalOffset=-1;
  100.                         break;
  101.                     case "sub":
  102.                         verticalOffset=1;
  103.                         break;
  104.                 }
  105.             }
  106.             ds_queue_destroy(terms);
  107.         } else if (c=="$"){
  108.             // Value
  109.         } else if (c=="%"){
  110.             // Function/Script call
  111.         } else {
  112.             // Actual text
  113.             var dim;
  114.             dim=string_split(addHTMLCharacter(32+sw, 32+sh, c), ",");
  115.             sw+=real(de(dim))+1;
  116.             lineHeight=max(lineHeight, real(de(dim)));
  117.             ds_queue_destroy(dim);
  118.         }
  119.     }
  120. }
  121. surface_reset_target();
Advertisement
Add Comment
Please, Sign In to add comment