1. RE: Bitmap clearing

Patrick.Barnes at transgrid.com.au wrote:
> If I have a win32lib pixmap, what is the quickest/easiest way to clear 
> all of it to a given background color?
  ------------------------------
-- PROCEDURE: clearWindow
--   Clear a window/pixmap to a particular color
--  Parameters:
--    id: ID of Window/Pixmap
--    color: color to paint Window/Pixmap
  ------------------------------
global procedure clearWindow( integer id, integer color )
   sequence p

   p = getCtlSize( id )
  
   setPenColor( id, color )
   drawRectangle( id, 1, 0, 0, p[1], p[2] )
end procedure

-- Brian

new topic     » topic index » view message » categorize

2. RE: Bitmap clearing

Oh ok... if that's fast enough, then no problem... I just thought there might be
a faster way to do it.

And what's the significance of a bitmap having a parent? I know it doesnt *need*
one.

-----Original Message-----
From: Wolf [mailto:wolfritz at KING.IGS.NET]
Subject: Re: Bitmap clearing



> If I have a win32lib pixmap, what is the quickest/easiest way to clear all of
> it to a given background color?

... simply:
  setPenColor(yourPix, yourColor)
  drawRectangle(yourPix, 1, 0, 0 ,x_size, y_size)



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************

new topic     » goto parent     » topic index » view message » categorize

3. RE: Bitmap clearing

Ok... well what I'm doing is...

I have an array of pixmaps, all 1024x768 in size.
There is a selection of graphics to be drawn to it, and I want to use stretchBLT
to put the images onto the pixmap (This not working - stretchBLT doesn't like
it).
Text is just put on with wPuts.
Then, one of those pixmaps is stretchBLT'd out to the window, at whatever size
the window is.



-----Original Message-----
From: jordah at btopenworld.com [mailto:jordah at btopenworld.com]
Subject: Re: Bitmap clearing



In win32lib, The pixmap(memory bitmap) requires a parent mainly for GDI
resource management. It makes the tracking of resources easier thus making
it faster to clean up

Jordah
----- Original Message -----
From: <Patrick.Barnes at transgrid.com.au>
To: "EUforum" <EUforum at topica.com>
Sent: Friday, January 24, 2003 12:03 AM
Subject: RE: Bitmap clearing


>
> Oh ok... if that's fast enough, then no problem... I just thought there
might be a faster way to do it.
>
> And what's the significance of a bitmap having a parent? I know it doesnt
*need* one.
>
> -----Original Message-----
> From: Wolf [mailto:wolfritz at KING.IGS.NET]
> Sent: Friday, 24 January 2003 10:36
> To: EUforum
> Subject: Re: Bitmap clearing
>
>
> > If I have a win32lib pixmap, what is the quickest/easiest way to clear
all of it to a given background color?
>
> ... simply:
>   setPenColor(yourPix, yourColor)
>   drawRectangle(yourPix, 1, 0, 0 ,x_size, y_size)
>
>
> TOPICA - Start your own email discussion group. FREE!
>
>
> ***********************************************************************
>
>
> ***********************************************************************
>
>
> TOPICA - Start your own email discussion group. FREE!
>


---



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************

new topic     » goto parent     » topic index » view message » categorize

4. RE: Bitmap clearing

Do the Blt procedures work at ALL to pixmap objects?

How would I copy an image to part of a pixmap object?

-----Original Message-----
From: Barnes Patrick 
Subject: RE: Bitmap clearing



Ok... well what I'm doing is...

I have an array of pixmaps, all 1024x768 in size.
There is a selection of graphics to be drawn to it, and I want to use stretchBLT
to put the images onto the pixmap (This not working - stretchBLT doesn't like
it).
Text is just put on with wPuts.
Then, one of those pixmaps is stretchBLT'd out to the window, at whatever size
the window is.



-----Original Message-----
From: jordah at btopenworld.com [mailto:jordah at btopenworld.com]
Sent: Friday, 24 January 2003 12:46
To: EUforum
Subject: Re: Bitmap clearing



In win32lib, The pixmap(memory bitmap) requires a parent mainly for GDI
resource management. It makes the tracking of resources easier thus making
it faster to clean up

Jordah
----- Original Message -----
From: <Patrick.Barnes at transgrid.com.au>
To: "EUforum" <EUforum at topica.com>
Sent: Friday, January 24, 2003 12:03 AM
Subject: RE: Bitmap clearing


>
> Oh ok... if that's fast enough, then no problem... I just thought there
might be a faster way to do it.
>
> And what's the significance of a bitmap having a parent? I know it doesnt
*need* one.
>
> -----Original Message-----
> From: Wolf [mailto:wolfritz at KING.IGS.NET]
> Sent: Friday, 24 January 2003 10:36
> To: EUforum
> Subject: Re: Bitmap clearing
>
>
> > If I have a win32lib pixmap, what is the quickest/easiest way to clear
all of it to a given background color?
>
> ... simply:
>   setPenColor(yourPix, yourColor)
>   drawRectangle(yourPix, 1, 0, 0 ,x_size, y_size)
>
>
> TOPICA - Start your own email discussion group. FREE!
>
>
> ***********************************************************************
>
>
> ***********************************************************************
>
>
> TOPICA - Start your own email discussion group. FREE!
>


---



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************

new topic     » goto parent     » topic index » view message » categorize

5. RE: Bitmap clearing

Lifesaver!

Routine 1:

* Given a bitmap - from loadBitmapFromFile
* Copies it to a specified Pixmap control
* Given the position on the Pixmap control
* Given the size of the bitmap on the pixmap control (ie can be
'stretched')

Routine 2:

* Given a pixmap control
* Copies it to the screen
* Given the position on the screen
* Given the size of the pixmap control on the screen (ie can be
'stretched')

If you could do them, or even explain a little more clearly what needs to
be done,
I will be VERY grateful.

==============================================
 _______<-------------------\__
/  _____<--------------------__|===
| |_    <-------------------/
\__| Patrick Barnes



-----Original Message-----
From: jordah at btopenworld.com [mailto:jordah at btopenworld.com]
Sent: Friday, 24 January 2003 15:19
To: EUforum
Subject: Re: Bitmap clearing



Could u please tell me what u want to do? and i'll write u an include file
for those specific routines u need.

U will probably get the include file some time sartuday or sunday. i work
during the weekend. so even monday at latest.

Jordah. I'll try to comment the code well

----- Original Message -----
From: <Patrick.Barnes at transgrid.com.au>
To: "EUforum" <EUforum at topica.com>
Sent: Friday, January 24, 2003 3:12 AM
Subject: RE: Bitmap clearing


>
> Do the Blt procedures work at ALL to pixmap objects?
>
> How would I copy an image to part of a pixmap object?
>
> -----Original Message-----
> From: Barnes Patrick
> Sent: Friday, 24 January 2003 13:05
> To: EUforum
> Subject: RE: Bitmap clearing
>
>
> Ok... well what I'm doing is...
>
> I have an array of pixmaps, all 1024x768 in size.
> There is a selection of graphics to be drawn to it, and I want to use
stretchBLT to put the images onto the pixmap (This not working -
stretchBLT
doesn't like it).
> Text is just put on with wPuts.
> Then, one of those pixmaps is stretchBLT'd out to the window, at
whatever
size the window is.
>
>
> -----Original Message-----
> From: jordah at btopenworld.com [mailto:jordah at btopenworld.com]
> Sent: Friday, 24 January 2003 12:46
> To: EUforum
> Subject: Re: Bitmap clearing
>
>
> In win32lib, The pixmap(memory bitmap) requires a parent mainly for GDI
> resource management. It makes the tracking of resources easier thus
making
> it faster to clean up
>
> Jordah
> ----- Original Message -----
> From: <Patrick.Barnes at transgrid.com.au>
> To: "EUforum" <EUforum at topica.com>
> Sent: Friday, January 24, 2003 12:03 AM
> Subject: RE: Bitmap clearing
>
>
> > Oh ok... if that's fast enough, then no problem... I just thought
there
> might be a faster way to do it.
> >
> > And what's the significance of a bitmap having a parent? I know it
doesnt
> *need* one.
> >
> > -----Original Message-----
> > From: Wolf [mailto:wolfritz at KING.IGS.NET]
> > Sent: Friday, 24 January 2003 10:36
> > To: EUforum
> > Subject: Re: Bitmap clearing
> >
> >
> > > If I have a win32lib pixmap, what is the quickest/easiest way to
clear
> all of it to a given background color?
> >
> > ... simply:
> >   setPenColor(yourPix, yourColor)
> >   drawRectangle(yourPix, 1, 0, 0 ,x_size, y_size)
> >
> >
> > TOPICA - Start your own email discussion group. FREE!
> >
> >
***********************************************************************
> >
> >
***********************************************************************
> >
> >
> > TOPICA - Start your own email discussion group. FREE!
> >
>
> ---
>
>
> TOPICA - Start your own email discussion group. FREE!
>
>
> ***********************************************************************
>
>
> ***********************************************************************
>
>
> TOPICA - Start your own email discussion group. FREE!
>
>
> ***********************************************************************
>
>
> ***********************************************************************
>
>
> TOPICA - Start your own email discussion group. FREE!
>


---



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************

new topic     » goto parent     » topic index » view message » categorize

6. RE: Bitmap clearing

Hey Jordah...
I found an error in your PatBLT procedure... I didn't notice until now, because
some of the pixmap wasn't clearing correctly, and I couldn't figure out why:

>-------------------------------------------
>procedure PatBlt(atom hdc,atom x,atom y,atom cx,atom cy,atom rop)
>-------------------------------------------
>   if not w32Func(zPatBlt,{hdc,x,y,cy,cy,rop}) then
>      warnErr("PatBlt Failed")      \-------perhaps that should be cx?  
>   end if
>end procedure

Very frustrating, I tore my program almost to pieces looking for the bug, and it
was your fault all along! :oP

Hopefully you don't have that same error sitting somewhere.

Thanks for the demo. VERY useful.

-Pat

-----Original Message-----
From: jordah at btopenworld.com [mailto:jordah at btopenworld.com]
Sent: Saturday, 25 January 2003 15:49
To: EUforum
Subject: Re: Bitmap clearing



Hi Patrick,

    I alittle bit under-estimated win32lib. It does alot of work for the
end-user. Its getDC has a very kewl construct. also, i have attached
BlankPixmap() which is a faster way to blank a pixmap.

Try this demo in  the win32lib directory because it requires mail.bmp

Hope this helps.
Jordah.

---------------------------------------------------------
--File   : Demo For Patrick
--Version:
--Date   :
--Author : Jordah Ferguson
---------------------------------------------------------

include win32lib.ew
-------------------------------------------

constant
  MainWindow = create(Window,"Demo for
Patrick",0,Default,Default,600,400,0),
  Pixmap1    = create(Pixmap,"",0,0,0,300,300,0),
  zPatBlt    =
registerw32Function(gdi32,"PatBlt",{C_LONG,C_LONG,C_INT,C_INT,C_INT,C_INT},C
_INT),
  -------------------------------------------
  Bitmap1    = loadBitmapFromFile(current_dir()&"\\mail.bmp")

-------------------------------------------
procedure PatBlt(atom hdc,atom x,atom y,atom cx,atom cy,atom rop)
-------------------------------------------
   if not w32Func(zPatBlt,{hdc,x,y,cy,cy,rop}) then
      warnErr("PatBlt Failed")
   end if
end procedure

-------------------------------------------
global procedure stretchBlt( atom dst, integer dstX, integer dstY,
      atom src, integer srcX, integer srcY,
      integer destWide, integer destHigh,
      integer srcWide, integer srcHigh,
      integer rop )
-------------------------------------------
    atom srcDC, dstDC
    srcDC = getDC( src )
    dstDC = getDC( dst )
    if not w32Func( xStretchBlt, {
      dstDC, dstX, dstY,
      destWide, destHigh,
      srcDC,
      srcX, srcY,
      srcWide, srcHigh,
      rop} ) then
      warnErr( "stretchBlt:StretchBlt failed." )
    end if
    releaseDC( dst )
    releaseDC( src )
end procedure

-------------------------------------------
procedure BlankPixmap(integer Pixmap,atom BkColor)
-------------------------------------------
   atom hdc,brush,oldbrush
   sequence rect
   rect = getRect(Pixmap)
   hdc = getDC(Pixmap) -- This already performs selectobject()
   brush = w32Func(xCreateSolidBrush,{BkColor})
   oldbrush = w32Func(xSelectObject,{hdc,brush})
   PatBlt(hdc,rect[1],rect[2],rect[3],rect[4],#00F00021)
   oldbrush = w32Func(xSelectObject,{hdc,oldbrush})
   oldbrush = w32Func(xDeleteObject,{brush})
   releaseDC(hdc)
end procedure


-------------------------------------------
procedure DrawToPixmap(integer Pix,atom hBmp,atom px,atom py,atom bitcx,atom
bitcy)
-------------------------------------------
   sequence rect
   rect = getRect(hBmp)
   stretchBlt(Pix,px,py,hBmp,0,0,bitcx,bitcy,rect[3],rect[4],SRCCOPY)
end procedure

-------------------------------------------
procedure DrawToScreen(integer dest,integer Pix,atom x,atom y,atom cx,atom
cy)
-------------------------------------------
   sequence rect
   rect = getRect(Pix)
   stretchBlt(dest,x,y,Pix,0,0,cx,cy,rect[3],rect[4],SRCCOPY)
end procedure

-------------------------------------------
procedure onPaint_Proc(integer id,integer event,sequence params)
-------------------------------------------
   sequence rect,rec,re
   re   = getClientRect(MainWindow)
   rect = getRect(Pixmap1)
   rec  = getRect(Bitmap1)
   BlankPixmap(Pixmap1,White)

DrawToPixmap(Pixmap1,Bitmap1,floor((rect[3]-rec[3])/2)-40,floor((rect[4]-rec
[4])/2)-40,rec[3]+40,rec[4]+40)
   DrawToScreen(MainWindow,Pixmap1,re[1],re[2],re[3],re[4])
end procedure
setHandler(MainWindow,w32HPaint,routine_id("onPaint_Proc"))

-------------------------------------------
procedure onResize_Proc(integer id,integer event,sequence params)
-------------------------------------------
   DrawToScreen(MainWindow,Pixmap1,0,0,params[2],params[3])
end procedure
setHandler(MainWindow,w32HResize,routine_id("onResize_Proc"))


-------------------------------------------
WinMain(MainWindow,Normal)



---



TOPICA - Start your own email discussion group. FREE!


***********************************************************************




***********************************************************************

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu