Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //кнопки
  2. #define BACK            300
  3. #define FORWARD 301
  4. #define REFRESH 302
  5. #define HOME            303
  6. #define GOTOURL 305
  7. #define SEARCHWEB       306
  8. #define ID1             178
  9. #define ID2             177
  10.  
  11. #define WINDOWS 0
  12. #define DOS             1
  13. #define KOI             2
  14. #define UTF             3
  15.  
  16. #define DONT_LOAD       0
  17. #define LETS_LOAD       1
  18.                      
  19. byte utf100tmmv_mas[77] = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁёhгsi\244j";
  20.  
  21.  
  22. dword get_URL_part(byte len) {
  23.         char temp1[1000];
  24.         copystr(#URL, #temp1);
  25.         temp1[len] = 0x00;
  26.         return #temp1;
  27. }
  28.  
  29.  
  30. inline byte chTag(dword text) {return strcmp(#tag,text);}
  31.  
  32. //У нас нет наклонных шрифтов, поэтому делаем костыль из
  33. //палочек для мороженого и жевательной резинки:
  34. //Снимаем область экрана и выводим её обратно полосками со смещением,
  35. //что даёт перекос картинки
  36. //При наличии фона и т.п. проявится вся костыльность решения :)
  37.  
  38. //часть данных уже получена в TBW - skin_width, Form.top, подключение memory
  39. inline void Skew(dword x,y,w,h)
  40. {
  41. dword italic_buf;
  42. int tile_height=2,//будем выводить двухпиксельными полосками
  43. i, skin_width,
  44. shift=-2;
  45.  
  46.   skin_width = GetSkinWidth();
  47.   Form.GetInfo(SelfInfo);
  48.   italic_buf = malloc(w*h*3);
  49.   //ebx = указатель на предварительно выделенную область памяти, куда будет помещено изображение в формате BBGGRRBBGGRR...
  50.   EBX = italic_buf;
  51.   //ecx = [размер по оси x]*65536 + [размер по оси y]
  52.   ECX = w * 65536 + h;
  53.   //edx = [координата по оси x]*65536 + [координата по оси y]
  54.   EDX = x + Form.left * 65536 + y + Form.top + skin_width;
  55.   EAX = 36;
  56.   $int  0x40;
  57.  
  58.   FOR (i=0;i*tile_height<h;i++){
  59.     PutImage(w*3*tile_height*i+italic_buf,w,tile_height,x+shift-i,i*tile_height+y);
  60.   }
  61.   free(italic_buf);
  62. }
  63.