/*
 * color_cursor.c -- create a predefined cursor and assign it to a canvas.
 */
#include <stdio.h>
#include <xview/xview.h>
#include <xview/panel.h>
#include <xview/cursor.h>

void
do_it(item, event)
{
    Rect *r;
    Panel panel = xv_get(item, PANEL_PARENT_PANEL);

    r = (Rect *)xv_get(xv_get(panel, XV_ROOT), WIN_MOUSE_XY);
    fprintf(stderr, "Root window: ");
    rect_print(r);
    fputc('\n', stderr);
    r = (Rect *)xv_get(xv_get(panel, CANVAS_NTH_PAINT_WINDOW, 0), WIN_MOUSE_XY);
    fprintf(stderr, "panel window: ");
    rect_print(r);
    fputc('\n', stderr);
}

main(argc, argv)
int argc;
char *argv[];
{
    Frame        frame;
    Canvas       canvas;
    Xv_Cursor    cursor;

    xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv);

    /*
     * create a cursor based on the image just created
     */
    cursor = xv_create(XV_NULL, CURSOR,
                       CURSOR_SRC_CHAR,        OLC_STOP_PTR,
                       NULL);

    /*
     * Create a base frame and a canvas
     */
    frame = xv_create(XV_NULL, FRAME, NULL);
    canvas = xv_create(frame, PANEL,
                       XV_WIDTH,               100,
                       XV_HEIGHT,              100,
                       NULL);
    /*
     * set the cursor to the paint window for the canvas
     * Do not set it for the canvas itself.
     */
    xv_set(xv_get(canvas, CANVAS_NTH_PAINT_WINDOW, 0),
           WIN_CURSOR,             cursor,
           NULL);
    xv_create(canvas, PANEL_BUTTON,
              PANEL_LABEL_STRING, "Do It",
              PANEL_NOTIFY_PROC,  do_it,
              NULL);

    window_fit(frame);
    window_main_loop(frame);
}
