Rev 5978 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4497 | leency | 1 | CustomCursor CursorPointer; |
2 | dword CursorFile = FROM "../TWB/pointer.cur"; |
||
3 | |||
4550 | leency | 4 | #define NOLINE 0 |
5 | #define UNDERLINE 1 |
||
6 | |||
4491 | leency | 7 | struct array_link { |
8 | dword link, text; |
||
9 | int x,y,w,h; |
||
4550 | leency | 10 | int underline; |
4491 | leency | 11 | }; |
4488 | leency | 12 | |
5772 | leency | 13 | struct LinksArray { |
14 | array_link links[400]; |
||
4493 | leency | 15 | char page_links[64000]; |
4491 | leency | 16 | dword buflen; |
17 | int count, active; |
||
18 | void Hover(); |
||
19 | void AddLink(); |
||
20 | void AddText(); |
||
4488 | leency | 21 | dword GetURL(); |
22 | void Clear(); |
||
5718 | leency | 23 | } PageLinks; |
4488 | leency | 24 | |
5772 | leency | 25 | void LinksArray::AddLink(dword lpath, int link_x, link_y) |
4488 | leency | 26 | { |
4491 | leency | 27 | links[count].x = link_x; |
28 | links[count].y = link_y; |
||
29 | |||
30 | links[count].link = buflen; |
||
5772 | leency | 31 | strcpy(buflen, lpath); |
32 | buflen += strlen(lpath)+1; |
||
4491 | leency | 33 | count++; |
4488 | leency | 34 | } |
35 | |||
4550 | leency | 36 | void LinksArray::AddText(dword new_text, int link_w, link_h, link_underline) |
4491 | leency | 37 | { |
38 | if (count<1) return; |
||
39 | links[count-1].w = link_w; |
||
40 | links[count-1].h = link_h; |
||
4550 | leency | 41 | links[count-1].underline = link_underline; |
4491 | leency | 42 | |
43 | links[count-1].text = buflen; |
||
44 | strcpy(buflen, new_text); |
||
45 | buflen += strlen(new_text)+1; |
||
46 | } |
||
47 | |||
4488 | leency | 48 | dword LinksArray::GetURL(int id) |
49 | { |
||
4491 | leency | 50 | return links[id].link; |
51 | } |
||
52 | |||
53 | void LinksArray::Clear() |
||
54 | { |
||
4493 | leency | 55 | int i; |
56 | for (i=0; i<=count; i++) DeleteButton(i+400); |
||
4491 | leency | 57 | buflen = #page_links; |
58 | count = 0; |
||
59 | active = -1; |
||
4497 | leency | 60 | CursorPointer.Restore(); |
4491 | leency | 61 | } |
62 | |||
4686 | leency | 63 | char temp[sizeof(URL)]; |
4677 | leency | 64 | PathShow_data status_text = {0, 17,250, 6, 250, 0, 0, 0x0, 0xFFFfff, 0, #temp, 0}; |
4497 | leency | 65 | |
4492 | leency | 66 | void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col) |
4491 | leency | 67 | { |
68 | int i; |
||
5825 | leency | 69 | signed int WBY = -WB1.list.first*WB1.list.item_h - WB1.DrawBuf.zoom; |
4491 | leency | 70 | for (i=0; i |
71 | { |
||
72 | if (mx>links[i].x) && (my>links[i].y) && (mx |
||
4488 | leency | 73 | { |
5773 | leency | 74 | if (mouse.down) DrawRectangle(links[active].x, links[active].y, links[active].w, links[active].h, 0); |
75 | if (mouse.up) ClickLink(); |
||
4497 | leency | 76 | if (active==i) return; |
77 | CursorPointer.Set(); |
||
5773 | leency | 78 | if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y + links[active].h,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
79 | if (links[i].underline) DrawBar(links[i].x, WBY + links[i].y + links[i].h,links[i].w, WB1.DrawBuf.zoom, bg_col); |
||
4491 | leency | 80 | active = i; |
5519 | leency | 81 | status_text.start_x = wv_progress_bar.left + wv_progress_bar.width + 10; |
82 | status_text.start_y = Form.cheight - STATUSBAR_H + 3; |
||
4718 | leency | 83 | status_text.area_size_x = Form.cwidth - status_text.start_x -3; |
84 | DrawBar(status_text.start_x, status_text.start_y, status_text.area_size_x, 9, col_bg); |
||
4677 | leency | 85 | status_text.text_pointer = links[active].link; |
86 | PathShow_prepare stdcall(#status_text); |
||
87 | PathShow_draw stdcall(#status_text); |
||
4491 | leency | 88 | return; |
4488 | leency | 89 | } |
90 | } |
||
4497 | leency | 91 | if (active!=-1) |
92 | { |
||
93 | CursorPointer.Restore(); |
||
5773 | leency | 94 | if (links[active].underline) DrawBar(links[active].x, WBY + links[active].y + links[active].h,links[active].w, WB1.DrawBuf.zoom, link_col_in); |
4718 | leency | 95 | DrawBar(status_text.start_x, status_text.start_y, status_text.area_size_x, 9, col_bg); |
4497 | leency | 96 | active = -1; |
97 | } |
||
4488 | leency | 98 | } |