PreviousUpNext

15.4.1480  src/lib/x-kit/xclient/pkg/window/ro-pixmap.pkg

## ro-pixmap.pkg
#
# See also:
#     src/lib/x-kit/xclient/pkg/window/window.pkg
#     src/lib/x-kit/xclient/pkg/window/cs-pixmap.pkg
#     src/lib/x-kit/xclient/pkg/window/rw-pixmap.pkg

# Compiled by:
#     src/lib/x-kit/xclient/xclient-internals.sublib





###                     "My method to overcome a difficulty is to go round it."
###
###                                               -- George Polya


stipulate
    package cw =  cs_pixmap;
    package dr =  draw;                                         # draw          is from   src/lib/x-kit/xclient/pkg/window/draw.pkg
    package dt =  draw_types;                                   # draw_types    is from   src/lib/x-kit/xclient/pkg/window/draw-types.pkg
    package xg =  xgeometry;                                    # xgeometry     is from   src/lib/std/2d/xgeometry.pkg
    package wp =  rw_pixmap;                                    # rw_pixmap     is from   src/lib/x-kit/xclient/pkg/window/rw-pixmap.pkg
    package sn =  xsession;                                     # xsession      is from   src/lib/x-kit/xclient/pkg/window/xsession.pkg
herein


    package   ro_pixmap
    : (weak)  Ro_Pixmap                                         # Ro_Pixmap     is from   src/lib/x-kit/xclient/pkg/window/ro-pixmap.api
    {

        stipulate
            package d: (weak)  api { Ro_Pixmap =  RO_PIXMAP dt::Rw_Pixmap; }
                =
                draw_types;
        herein
            include d;
        end;


        fun make_readonly_pixmap_from_clientside_pixmap screen im
            =
            dt::RO_PIXMAP (cw::make_readwrite_pixmap_from_clientside_pixmap screen im);


        fun make_readonly_pixmap_from_ascii screen data
            =
            dt::RO_PIXMAP (cw::make_readwrite_pixmap_from_ascii_data screen data);


        fun make_readonly_pixmap_from_readwrite_pixmap (pm as dt::RW_PIXMAP { screen, size, screen_pen_and_draw_imps, ... } )
            =
            {   screen_pen_and_draw_imps
                    ->
                    sn::SCREEN_PEN_AND_DRAW_IMPS { depth, ... };

                new_pixmap
                    =
                    wp::make_readwrite_pixmap
                        screen
                        (size, depth);

                dr::pixel_blt
                    #
                    (dt::drawable_of_rw_pixmap  new_pixmap)
                    #
                    pen::default_pen
                    #
                    { from     =>  dt::FROM_RW_PIXMAP pm,
                      from_box =>  xg::box::make (xg::point::zero, size),
                      to_pos   =>  xg::point::zero
                    };

                dt::RO_PIXMAP new_pixmap;
            };
    };
end;

## 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.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext