|
|
|
module "/pliant/language/unsafe.pli" module "/pliant/language/context.pli" module "/pliant/protocol/http/client.pli" module "/pliant/graphic/color/gamut.pli" module "/pliant/graphic/image/prototype.pli" module "/pliant/graphic/image/pixmap.pli" module "/pliant/graphic/image/packed.pli" module "/pliant/graphic/image/antialiasing.pli" module "/pliant/graphic/image/convert.pli" module "/pliant/graphic/browser/prototype.pli" module "/pliant/graphic/browser/parser.pli" module "/pliant/graphic/os/x11.pli" module "/pliant/graphic/filter/io.pli" module "/pliant/graphic/browser/common.pli"
|
|
module "/pliant/language/unsafe.pli" module "/pliant/language/context.pli" module "/pliant/protocol/http/client.pli" module "/pliant/graphic/color/gamut.pli" module "/pliant/graphic/image/prototype.pli" module "/pliant/graphic/image/pixmap.pli" module "/pliant/graphic/image/packed.pli" module "/pliant/graphic/image/antialiasing.pli" module "/pliant/graphic/image/convert.pli" module "/pliant/graphic/browser/prototype.pli" module "/pliant/graphic/browser/parser.pli" module "/pliant/graphic/os/x11.pli" module "/pliant/graphic/filter/io.pli" module "/pliant/graphic/browser/common.pli"
|
|
|
|
constant dpi 75
|
|
|
constant page_mm_x 210 constant page_mm_y 297 constant ground_color (rgb_color 208 208 208) constant antialiasing 1 constant margin 5 constant window_size_x (cast page_mm_x/25.4*dpi Int)+2*margi constant window_size_y (cast page_mm_y/25.4*dpi Int)+2*margi constant memory_maximum_buffer 8*2^20 constant window_max_x 8192 constant window_max_y 8192
function browse url0 user password arg Str url0 user password var List:BrowserPage backward var List:BrowserPage forward var Str url := url0 ; var Str form := "" var Str options := "" if user<>"" options := "user "+string:user+" password "+string:passw var Int tx := -margin ; var Int ty := -margin var DateTime dt := datetime var Link:D2Box drawing :> html_parse url form options console "loaded in " string:(cast (datetime:seconds-dt:sec (var D2Context context) bind (image_prototype 0 0 page_mm_ drawing position context var Int memo_x memo_y ; var CBool scroll var XSetWindowAttributes a a background_pixel := x11_ground pixel a override_redirect := false # true a event_mask := PointerMotionMask+ButtonPressMask+ButtonRe var uInt mask := CWBackPixel+CWBorderPixel+CWOverrideRedir var XWindow window := XCreateWindow display screen:root 0 XStoreName display window "Pliant browser" XMapWindow display window while true XNextEvent display (var XEvent event) if event:type=Expose or event:type=GraphicsExpose var Pointer:XExposeEvent expose :> addressof:event map if trace console "redraw " expose:x " " expose:y " " expose:x var DateTime dt := datetime redraw drawing 25.4/dpi 25.4/dpi expose:x+tx expose:y+
|
|
constant page_mm_x 210 constant page_mm_y 297 constant ground_color (rgb_color 208 208 208) constant antialiasing 1 constant margin 5 constant window_size_x (cast page_mm_x/25.4*dpi Int)+2*margi constant window_size_y (cast page_mm_y/25.4*dpi Int)+2*margi constant memory_maximum_buffer 8*2^20 constant window_max_x 8192 constant window_max_y 8192
function browse url0 user password arg Str url0 user password var List:BrowserPage backward var List:BrowserPage forward var Str url := url0 ; var Str form := "" var Str options := "" if user<>"" options := "user "+string:user+" password "+string:passw var Int tx := -margin ; var Int ty := -margin var DateTime dt := datetime var Link:D2Box drawing :> html_parse url form options console "loaded in " string:(cast (datetime:seconds-dt:sec (var D2Context context) bind (image_prototype 0 0 page_mm_ drawing position context var Int memo_x memo_y ; var CBool scroll var XSetWindowAttributes a a background_pixel := x11_ground pixel a override_redirect := false # true a event_mask := PointerMotionMask+ButtonPressMask+ButtonRe var uInt mask := CWBackPixel+CWBorderPixel+CWOverrideRedir var XWindow window := XCreateWindow display screen:root 0 XStoreName display window "Pliant browser" XMapWindow display window while true XNextEvent display (var XEvent event) if event:type=Expose or event:type=GraphicsExpose var Pointer:XExposeEvent expose :> addressof:event map if trace console "redraw " expose:x " " expose:y " " expose:x var DateTime dt := datetime redraw drawing 25.4/dpi 25.4/dpi expose:x+tx expose:y+
|
|
|
|
console (cast (datetime:seconds-dt:seconds)*1000 Int)
|
|
# console (cast (datetime:seconds-dt:seconds)*1000 Int) " ms" eol
|
|
if event:type=GraphicsExpose and expose:count=0 scroll := true eif event:type=NoExpose if trace console "noexpose" eol scroll := true eif event:type=KeyPress or event:type=KeyRelease var Pointer:XKeyEvent k :> addressof:event map XKeyEve console "key " k:keycode " state " k:state var Str key := " " memory_clear addressof:(var XComposeStatus cstatus) XC XLookupString k key:characters key:len (var XKeySym ke key := key 0 (key search "[0]" 0) (var Str compose) set cstatus:compose_ptr cstatus:char console " -> keysym " keysym:id " [dq]" key "[dq] comp var D2Event ev ev type := shunt event:type=KeyPress event_key event_o ev key := undefined if key:len=1 ev key := key:0:number ev status := shunt (k:state .and. 256)<>0 mouse_button ev status += shunt (k:state .and. 512)<>0 mouse_button ev status += shunt (k:state .and. 1024)<>0 mouse_butto ev x := (k:x+tx)*25.4/dpi ev y := (k:y+ty)*25.4/dpi ev options := "x11_key_"+(shunt event:type=KeyPress "p ev url := "" drawing event ev if event:type=KeyPress if keysym:id=XK_F0+1 and (exists backward:last) var BrowserPage bp ; bp url := url ; bp form := fo forward += bp url := backward:last url form := backward:last form tx := backward:last tx ty := backward:last ty backward remove backward:last var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console "backward " url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif keysym:id=XK_F0+2 and (exists forward:last) var BrowserPage bp ; bp url := url ; bp form := fo backward += bp url := forward:last url form := forward:last form tx := forward:last tx ty := forward:last ty forward remove forward:last var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console "forward " url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif event:type=ButtonPress or event:type=ButtonRelease var Pointer:XButtonEvent button :> addressof:event map if true # trace console "button " button:button " state " button:sta if event:type=ButtonPress and button:button=2 memo_x := button x ; memo_y := button y ; scroll := var D2Event ev ev type := event_mouse ev key := undefined ev status := shunt (button:button=1 and event:type=But ev status += shunt (button:button=2 and event:type=But ev status += shunt (button:button=3 and event:type=But ev x := (button:x+tx)*25.4/dpi ev y := (button:y+ty)*25.4/dpi ev options := "x11_state "+(string button:state)+" x11 ev url := "" ; ev form := "" drawing event ev if event:type=ButtonPress if button:button=1 and ev:url<>"" var BrowserPage bp ; bp url := url ; bp form := fo backward += bp forward := var List:BrowserPage empty_list url := url_concat url ev:url form := ev form tx := -margin ; ty := -margin var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif event:type=MotionNotify var Pointer:XMotionEvent motion :> addressof:event map if trace console "motion " motion:x " " motion:y " (" motion: if motion:state=512 and scroll # middle button is down var Int delta_x := min motion:x-memo_x tx+margin ; v if delta_x<>0 or delta_y<>0 var XGC gc := XCreateGC display window 0 (var XGCV XCopyArea display window window gc -delta_x -delta XFreeGC display gc scroll := false tx -= delta_x ; ty -= delta_y memo_x := motion x ; memo_y := motion y else console "unknown event " event:type eol
|
|
if event:type=GraphicsExpose and expose:count=0 scroll := true eif event:type=NoExpose if trace console "noexpose" eol scroll := true eif event:type=KeyPress or event:type=KeyRelease var Pointer:XKeyEvent k :> addressof:event map XKeyEve console "key " k:keycode " state " k:state var Str key := " " memory_clear addressof:(var XComposeStatus cstatus) XC XLookupString k key:characters key:len (var XKeySym ke key := key 0 (key search "[0]" 0) (var Str compose) set cstatus:compose_ptr cstatus:char console " -> keysym " keysym:id " [dq]" key "[dq] comp var D2Event ev ev type := shunt event:type=KeyPress event_key event_o ev key := undefined if key:len=1 ev key := key:0:number ev status := shunt (k:state .and. 256)<>0 mouse_button ev status += shunt (k:state .and. 512)<>0 mouse_button ev status += shunt (k:state .and. 1024)<>0 mouse_butto ev x := (k:x+tx)*25.4/dpi ev y := (k:y+ty)*25.4/dpi ev options := "x11_key_"+(shunt event:type=KeyPress "p ev url := "" drawing event ev if event:type=KeyPress if keysym:id=XK_F0+1 and (exists backward:last) var BrowserPage bp ; bp url := url ; bp form := fo forward += bp url := backward:last url form := backward:last form tx := backward:last tx ty := backward:last ty backward remove backward:last var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console "backward " url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif keysym:id=XK_F0+2 and (exists forward:last) var BrowserPage bp ; bp url := url ; bp form := fo backward += bp url := forward:last url form := forward:last form tx := forward:last tx ty := forward:last ty forward remove forward:last var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console "forward " url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif event:type=ButtonPress or event:type=ButtonRelease var Pointer:XButtonEvent button :> addressof:event map if true # trace console "button " button:button " state " button:sta if event:type=ButtonPress and button:button=2 memo_x := button x ; memo_y := button y ; scroll := var D2Event ev ev type := event_mouse ev key := undefined ev status := shunt (button:button=1 and event:type=But ev status += shunt (button:button=2 and event:type=But ev status += shunt (button:button=3 and event:type=But ev x := (button:x+tx)*25.4/dpi ev y := (button:y+ty)*25.4/dpi ev options := "x11_state "+(string button:state)+" x11 ev url := "" ; ev form := "" drawing event ev if event:type=ButtonPress if button:button=1 and ev:url<>"" var BrowserPage bp ; bp url := url ; bp form := fo backward += bp forward := var List:BrowserPage empty_list url := url_concat url ev:url form := ev form tx := -margin ; ty := -margin var Str options := "" if user<>"" and (url0 parse "http://" any:(var Str options := "user "+string:user+" password "+stri console url eol drawing :> html_parse url form options (var D2Context context) bind (image_prototype 0 0 drawing position context XClearArea display window 0 0 window_max_x window_ eif event:type=MotionNotify var Pointer:XMotionEvent motion :> addressof:event map if trace console "motion " motion:x " " motion:y " (" motion: if motion:state=512 and scroll # middle button is down var Int delta_x := min motion:x-memo_x tx+margin ; v if delta_x<>0 or delta_y<>0 var XGC gc := XCreateGC display window 0 (var XGCV XCopyArea display window window gc -delta_x -delta XFreeGC display gc scroll := false tx -= delta_x ; ty -= delta_y memo_x := motion x ; memo_y := motion y else console "unknown event " event:type eol
|