## draw-imp.api
# Compiled by:
#
src/lib/x-kit/xclient/xclient-internals.sublib# This api is implemented in:
#
#
src/lib/x-kit/xclient/pkg/window/draw-imp.pkgstipulate
include threadkit; # threadkit is from
src/lib/src/lib/thread-kit/src/core-thread-kit/threadkit.pkg #
package s2t = xsocket_to_topwindow_router; # xsocket_to_topwindow_router is from
src/lib/x-kit/xclient/pkg/window/xsocket-to-topwindow-router.pkg package xg = xgeometry; # xgeometry is from
src/lib/std/2d/xgeometry.pkg package p2g = pen_to_gcontext_imp; # pen_to_gcontext_imp is from
src/lib/x-kit/xclient/pkg/window/pen-to-gcontext-imp.pkg package m1 = oneshot_maildrop; # oneshot_maildrop is from
src/lib/src/lib/thread-kit/src/core-thread-kit/oneshot-maildrop.pkg package pg = pen_guts; # pen_guts is from
src/lib/x-kit/xclient/pkg/window/pen-guts.pkg package vu8 = vector_of_one_byte_unts; # vector_of_one_byte_unts is from
src/lib/std/src/vector-of-one-byte-unts.pkg package xok = xsocket; # xsocket is from
src/lib/x-kit/xclient/pkg/wire/xsocket.pkg package xt = xtypes; # xtypes is from
src/lib/x-kit/xclient/pkg/wire/xtypes.pkgherein
api Draw_Imp {
package s: api {
#
Mapped_State
= TOPWINDOW_IS_NOW_UNMAPPED
| TOPWINDOW_IS_NOW_MAPPED
| FIRST_EXPOSE
;
};
package t: api {
#
Poly_Text
= TEXT (Int, String)
| FONT xt::Font_Id
;
};
package o: api {
Draw_Opcode
= POLY_POINT (Bool, List( xg::Point ))
| POLY_LINE (Bool, List( xg::Point ))
| FILL_POLY (xt::Shape, Bool, List( xg::Point ))
| POLY_SEG List( xg::Line )
| POLY_BOX List( xg::Box )
| POLY_FILL_BOX List( xg::Box )
| POLY_ARC List( xg::Arc )
| POLY_FILL_ARC List( xg::Arc )
| COPY_AREA
( xg::Point,
xt::Xid,
xg::Box,
m1::Oneshot_Maildrop (Void -> List( xg::Box ) )
)
| COPY_PLANE
( xg::Point,
xt::Xid,
xg::Box,
Int,
m1::Oneshot_Maildrop (Void -> List( xg::Box ) )
)
| COPY_PMAREA (xg::Point, xt::Xid, xg::Box)
| COPY_PMPLANE (xg::Point, xt::Xid, xg::Box, Int)
| CLEAR_AREA xg::Box
| PUT_IMAGE
{
to_point: xg::Point,
size: xg::Size,
depth: Int,
lpad: Int,
format: xt::Image_Format,
data: vu8::Vector
}
| POLY_TEXT8 (xt::Font_Id, xg::Point, List(t::Poly_Text))
| IMAGE_TEXT8 (xt::Font_Id, xg::Point, String)
;
};
package i: api {
#
Destroy_Item
= WINDOW xt::Window_Id
| PIXMAP xt::Pixmap_Id
;
};
package d: api {
#
Draw_Op
= DRAW
{ to: xt::Xid,
pen: pg::Pen,
op: o::Draw_Opcode
}
| LOCK_WINDOW_FOR_RUBBERBANDING {
draw_slot: Mailslot( Draw_Op ), # Stream of drawing commands for the overlay
release': Mailop( Void ) # Overlay release mailop
}
| DESTROY i::Destroy_Item
| FLUSH Oneshot_Maildrop( Void )
| THREAD_ID Oneshot_Maildrop( Int )
| BATCHING_ON
| BATCHING_OFF
;
};
make_draw_imp
:
( Mailop( s::Mapped_State ), # Used to tell draw_imp when its window is un/mapped.
p2g::Pen_To_Gcontext_Imp,
s2t::Xsocket_To_Topwindow_Router,
xok::Xsocket
)
->
d::Draw_Op
->
Void;
};
end; # stipulate
## COPYRIGHT (c) 1990, 1991 by John H. Reppy. See COPYRIGHT file for details.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2012,
## released under Gnu Public Licence version 3.