Re: [pygame] pygame.scrap bitmap stuff

2006-07-13 Thread René Dudfield

Hi,

I'm not sure how... but imageext here is linked with libtiff.  Maybe
because it is linked with SDL_image it gets it's dependencies linked
in?

This is the link line:
gcc -pthread -shared build/temp.linux-i686-2.4/src/imageext.o -lSDL
-lpthread -lSDL_image -o build/lib.linux-i686-2.4/pygame/imageext.so

This is the list of things it's linked against.
ldd build/lib.linux-i686-2.4/pygame/imageext.so
linux-gate.so.1 =  (0xe000)
libSDL-1.2.so.0 = /usr/lib/libSDL-1.2.so.0 (0xb7eb2000)
libpthread.so.0 = /lib/tls/i686/cmov/libpthread.so.0 (0xb7e9f000)
libSDL_image-1.2.so.0 = /usr/lib/libSDL_image-1.2.so.0 (0xb7e84000)
libc.so.6 = /lib/tls/i686/cmov/libc.so.6 (0xb7d4b000)
libX11.so.6 = /usr/X11R6/lib/libX11.so.6 (0xb7c8)
libXext.so.6 = /usr/X11R6/lib/libXext.so.6 (0xb7c72000)
libasound.so.2 = /usr/lib/libasound.so.2 (0xb7bbf000)
libm.so.6 = /lib/tls/i686/cmov/libm.so.6 (0xb7b99000)
libdl.so.2 = /lib/tls/i686/cmov/libdl.so.2 (0xb7b95000)
/lib/ld-linux.so.2 (0x8000)
libtiff.so.4 = /usr/lib/libtiff.so.4 (0xb7b42000)
libjpeg.so.62 = /usr/lib/libjpeg.so.62 (0xb7b24000)
libpng12.so.0 = /usr/lib/libpng12.so.0 (0xb7aff000)
libz.so.1 = /usr/lib/libz.so.1 (0xb7aeb000)


On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:

Well, I'm not sure what's in SDL_image, I'm using the binary from
libsdl.org. You said imageext, which links to just libjpeg and libpng
directly.

-bob

On Jul 12, 2006, at 9:24 PM, René Dudfield wrote:

 SDL_image supports libtiff, at least here on my debian box.

 On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:
 Just libpng and libjpg like everywhere else.. there's no code in
 imageext that knows how to do TIFF, so I don't see why it should link
 to libtiff.

 That said, it *could* link to libtiff if we added that functionality.
 I don't have any problem adding that dependency.

 -bob

 On Jul 12, 2006, at 8:51 PM, René Dudfield wrote:

  Sounds good!  Nice one.
 
  Is libtiff linked to imageext on macosx?  If so, I think there is a
  save as tiff function in there which I could add.
 
  I think I could make it save to bmp in memory fairly easily.  I'll
  need to change the save signature to take a name hint(like load
 does).
 
  eg.
  f = someStringIOclass()
  surf.save(f, bla.bmp)
 
 
 
 
 
 
  On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:
  I went ahead and implemented (read: prototyped) scrap bitmap
 support
  for Mac OS X, but the implementation is terribly inefficient.
 Pygame
  surfaces aren't terribly accessible from Python outside of
 surfarray
  (which I didn't want to depend on).
 
  Going from a Surface to the pasteboard is particularly painful in
  this implementation:
 
  1. Surface to PNG (on disk!)
  2. NSImage from on-disk PNG
  3. NSImage to TIFF
  4. TIFF to pasteboard
 
  The absolute fastest route (which doesn't exist in pygame)
 would be:
 
  1. Surface to TIFF (in memory)
  2. TIFF to pasteboard
 
  pygame doesn't have any TIFF writing capability at all, a
 compromise
  here would to at least avoid hitting the disk and zlib:
 
  1. Surface to BMP (in memory)
  2. BMP to NSImage
  3. NSImage to TIFF
  4. TIFF to pasteboard
 
  Unfortunately this also isn't currently possible because pygame
  doesn't support BMP writing anymore (or so it seems from a
 quick look
  at the code) and it definitely won't do it to memory instead of
 disk.
  Cocoa does not support TGA.
 
  Going the other way is also gnarly, but mostly because I didn't
 want
  to think more than I had to:
 
  1. pasteboard to NSImage
  2. NSImage to TIFF
  3. TIFF to NSBitmapImageRep
  4. NSBitmapImageRep to BMP (in memory)
  5. Surface from BMP
 
  Getting a NSBitmapImageRep directly from the NSImage (steps 2+3
  combined) is definitely possible without going between TIFF, but I
  was too lazy to think about what that would do for vector graphics
  (e.g. PDF on the pasteboard) and screen representations. It's not
  necessarily true that NSImage will have a NSBitmapImageRep cached
  already.
 
  Going from NSBitmapImageRep to a Surface without hitting BMP is
  possible, but there's a bunch of formats the NSBitmapImageRep
 could
  be in and I didn't want to think about that either :)
 
  In any case, pygame.scrap is 100% implemented on Mac OS X, and
 it's
  kinda fun to play with. An easy way to test is to take a partial
  screen cap to the pasteboard (shift-ctrl-cmd-4) and blit it in
 your
  pygame app. You should be able to bring in anything from the
  pasteboard that NSImage can load: icons, jpeg, png, pdf (!), tiff,
  etc.
 
  -bob
 
 






Re: [pygame] pygame.scrap bitmap stuff

2006-07-13 Thread Bob Ippolito
Well, you can't use symbols from indirectly referenced libraries in a  
system with two-level namespaces (like OS X), so it really doesn't  
matter what SDL_image is linked to. Especially because the libpng/ 
libjpeg/etc. are compiled statically into SDL_image and aren't  
exported anyway.


The saving functions aren't terribly useful for this purpose right  
now because they need to write to files, they won't use a file-like  
object.


-bob

On Jul 12, 2006, at 11:17 PM, René Dudfield wrote:


Yeah.  However pygame uses the writing functions in libpng, libjpg to
save images.  libtiff also has some tif saving code in it, so we can
use that.  Since SDL_image is often compiled with libjpg, libpng, and
libtiff support compiled in we can use those libraries for write
support.

I've notified the SDL people about the saving functions in pygame, but
I didn't get any response to that email.  So I'm not sure if anyone
wants to put them into SDL_image.

Cheers.


On 7/13/06, Alex Holkner [EMAIL PROTECTED] wrote:

René Dudfield wrote:

 SDL_image supports libtiff, at least here on my debian box.


SDL_image doesn't have any support for saving images.

Alex.


 On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:

 Just libpng and libjpg like everywhere else.. there's no code in
 imageext that knows how to do TIFF, so I don't see why it  
should link

 to libtiff.

 That said, it *could* link to libtiff if we added that  
functionality.

 I don't have any problem adding that dependency.

 -bob

 On Jul 12, 2006, at 8:51 PM, René Dudfield wrote:

  Sounds good!  Nice one.
 
  Is libtiff linked to imageext on macosx?  If so, I think  
there is a

  save as tiff function in there which I could add.
 
  I think I could make it save to bmp in memory fairly easily.   
I'll
  need to change the save signature to take a name hint(like  
load does).

 
  eg.
  f = someStringIOclass()
  surf.save(f, bla.bmp)
 
 
 
 
 
 
  On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:
  I went ahead and implemented (read: prototyped) scrap bitmap  
support
  for Mac OS X, but the implementation is terribly  
inefficient. Pygame
  surfaces aren't terribly accessible from Python outside of  
surfarray

  (which I didn't want to depend on).
 
  Going from a Surface to the pasteboard is particularly  
painful in

  this implementation:
 
  1. Surface to PNG (on disk!)
  2. NSImage from on-disk PNG
  3. NSImage to TIFF
  4. TIFF to pasteboard
 
  The absolute fastest route (which doesn't exist in pygame)  
would be:

 
  1. Surface to TIFF (in memory)
  2. TIFF to pasteboard
 
  pygame doesn't have any TIFF writing capability at all, a  
compromise

  here would to at least avoid hitting the disk and zlib:
 
  1. Surface to BMP (in memory)
  2. BMP to NSImage
  3. NSImage to TIFF
  4. TIFF to pasteboard
 
  Unfortunately this also isn't currently possible because pygame
  doesn't support BMP writing anymore (or so it seems from a  
quick look
  at the code) and it definitely won't do it to memory instead  
of disk.

  Cocoa does not support TGA.
 
  Going the other way is also gnarly, but mostly because I  
didn't want

  to think more than I had to:
 
  1. pasteboard to NSImage
  2. NSImage to TIFF
  3. TIFF to NSBitmapImageRep
  4. NSBitmapImageRep to BMP (in memory)
  5. Surface from BMP
 
  Getting a NSBitmapImageRep directly from the NSImage (steps 2+3
  combined) is definitely possible without going between TIFF,  
but I
  was too lazy to think about what that would do for vector  
graphics
  (e.g. PDF on the pasteboard) and screen representations.  
It's not
  necessarily true that NSImage will have a NSBitmapImageRep  
cached

  already.
 
  Going from NSBitmapImageRep to a Surface without hitting BMP is
  possible, but there's a bunch of formats the  
NSBitmapImageRep could

  be in and I didn't want to think about that either :)
 
  In any case, pygame.scrap is 100% implemented on Mac OS X,  
and it's
  kinda fun to play with. An easy way to test is to take a  
partial
  screen cap to the pasteboard (shift-ctrl-cmd-4) and blit it  
in your

  pygame app. You should be able to bring in anything from the
  pasteboard that NSImage can load: icons, jpeg, png, pdf (!),  
tiff,

  etc.
 
  -bob
 
 










Re: [pygame] pygame.scrap bitmap stuff

2006-07-12 Thread Bob Ippolito


On Jul 12, 2006, at 8:34 PM, andrew baker wrote:


What's a scrap?


http://www.pygame.org/docs/ref/scrap.html

-bob




Re: [pygame] pygame.scrap bitmap stuff

2006-07-12 Thread René Dudfield

Sounds good!  Nice one.

Is libtiff linked to imageext on macosx?  If so, I think there is a
save as tiff function in there which I could add.

I think I could make it save to bmp in memory fairly easily.  I'll
need to change the save signature to take a name hint(like load does).

eg.
f = someStringIOclass()
surf.save(f, bla.bmp)






On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:

I went ahead and implemented (read: prototyped) scrap bitmap support
for Mac OS X, but the implementation is terribly inefficient. Pygame
surfaces aren't terribly accessible from Python outside of surfarray
(which I didn't want to depend on).

Going from a Surface to the pasteboard is particularly painful in
this implementation:

1. Surface to PNG (on disk!)
2. NSImage from on-disk PNG
3. NSImage to TIFF
4. TIFF to pasteboard

The absolute fastest route (which doesn't exist in pygame) would be:

1. Surface to TIFF (in memory)
2. TIFF to pasteboard

pygame doesn't have any TIFF writing capability at all, a compromise
here would to at least avoid hitting the disk and zlib:

1. Surface to BMP (in memory)
2. BMP to NSImage
3. NSImage to TIFF
4. TIFF to pasteboard

Unfortunately this also isn't currently possible because pygame
doesn't support BMP writing anymore (or so it seems from a quick look
at the code) and it definitely won't do it to memory instead of disk.
Cocoa does not support TGA.

Going the other way is also gnarly, but mostly because I didn't want
to think more than I had to:

1. pasteboard to NSImage
2. NSImage to TIFF
3. TIFF to NSBitmapImageRep
4. NSBitmapImageRep to BMP (in memory)
5. Surface from BMP

Getting a NSBitmapImageRep directly from the NSImage (steps 2+3
combined) is definitely possible without going between TIFF, but I
was too lazy to think about what that would do for vector graphics
(e.g. PDF on the pasteboard) and screen representations. It's not
necessarily true that NSImage will have a NSBitmapImageRep cached
already.

Going from NSBitmapImageRep to a Surface without hitting BMP is
possible, but there's a bunch of formats the NSBitmapImageRep could
be in and I didn't want to think about that either :)

In any case, pygame.scrap is 100% implemented on Mac OS X, and it's
kinda fun to play with. An easy way to test is to take a partial
screen cap to the pasteboard (shift-ctrl-cmd-4) and blit it in your
pygame app. You should be able to bring in anything from the
pasteboard that NSImage can load: icons, jpeg, png, pdf (!), tiff, etc.

-bob




Re: [pygame] pygame.scrap bitmap stuff

2006-07-12 Thread andrew baker
Oh, a clipboard, lovely.Thanks!On 7/12/06, René Dudfield [EMAIL PROTECTED] wrote:
Sounds good!Nice one.Is libtiff linked to imageext on macosx?If so, I think there is asave as tiff function in there which I could add.I think I could make it save to bmp in memory fairly easily.I'll
need to change the save signature to take a name hint(like load does).eg.f = someStringIOclass()surf.save(f, bla.bmp)On 7/13/06, Bob Ippolito 
[EMAIL PROTECTED] wrote: I went ahead and implemented (read: prototyped) scrap bitmap support for Mac OS X, but the implementation is terribly inefficient. Pygame surfaces aren't terribly accessible from Python outside of surfarray
 (which I didn't want to depend on). Going from a Surface to the pasteboard is particularly painful in this implementation: 1. Surface to PNG (on disk!) 2. NSImage from on-disk PNG
 3. NSImage to TIFF 4. TIFF to pasteboard The absolute fastest route (which doesn't exist in pygame) would be: 1. Surface to TIFF (in memory) 2. TIFF to pasteboard
 pygame doesn't have any TIFF writing capability at all, a compromise here would to at least avoid hitting the disk and zlib: 1. Surface to BMP (in memory) 2. BMP to NSImage
 3. NSImage to TIFF 4. TIFF to pasteboard Unfortunately this also isn't currently possible because pygame doesn't support BMP writing anymore (or so it seems from a quick look at the code) and it definitely won't do it to memory instead of disk.
 Cocoa does not support TGA. Going the other way is also gnarly, but mostly because I didn't want to think more than I had to: 1. pasteboard to NSImage 2. NSImage to TIFF
 3. TIFF to NSBitmapImageRep 4. NSBitmapImageRep to BMP (in memory) 5. Surface from BMP Getting a NSBitmapImageRep directly from the NSImage (steps 2+3 combined) is definitely possible without going between TIFF, but I
 was too lazy to think about what that would do for vector graphics (e.g. PDF on the pasteboard) and screen representations. It's not necessarily true that NSImage will have a NSBitmapImageRep cached
 already. Going from NSBitmapImageRep to a Surface without hitting BMP is possible, but there's a bunch of formats the NSBitmapImageRep could be in and I didn't want to think about that either :)
 In any case, pygame.scrap is 100% implemented on Mac OS X, and it's kinda fun to play with. An easy way to test is to take a partial screen cap to the pasteboard (shift-ctrl-cmd-4) and blit it in your
 pygame app. You should be able to bring in anything from the pasteboard that NSImage can load: icons, jpeg, png, pdf (!), tiff, etc. -bob
-- Andrew Ulysses Bakerfailrate


Re: [pygame] pygame.scrap bitmap stuff

2006-07-12 Thread Bob Ippolito
Just libpng and libjpg like everywhere else.. there's no code in  
imageext that knows how to do TIFF, so I don't see why it should link  
to libtiff.


That said, it *could* link to libtiff if we added that functionality.  
I don't have any problem adding that dependency.


-bob

On Jul 12, 2006, at 8:51 PM, René Dudfield wrote:


Sounds good!  Nice one.

Is libtiff linked to imageext on macosx?  If so, I think there is a
save as tiff function in there which I could add.

I think I could make it save to bmp in memory fairly easily.  I'll
need to change the save signature to take a name hint(like load does).

eg.
f = someStringIOclass()
surf.save(f, bla.bmp)






On 7/13/06, Bob Ippolito [EMAIL PROTECTED] wrote:

I went ahead and implemented (read: prototyped) scrap bitmap support
for Mac OS X, but the implementation is terribly inefficient. Pygame
surfaces aren't terribly accessible from Python outside of surfarray
(which I didn't want to depend on).

Going from a Surface to the pasteboard is particularly painful in
this implementation:

1. Surface to PNG (on disk!)
2. NSImage from on-disk PNG
3. NSImage to TIFF
4. TIFF to pasteboard

The absolute fastest route (which doesn't exist in pygame) would be:

1. Surface to TIFF (in memory)
2. TIFF to pasteboard

pygame doesn't have any TIFF writing capability at all, a compromise
here would to at least avoid hitting the disk and zlib:

1. Surface to BMP (in memory)
2. BMP to NSImage
3. NSImage to TIFF
4. TIFF to pasteboard

Unfortunately this also isn't currently possible because pygame
doesn't support BMP writing anymore (or so it seems from a quick look
at the code) and it definitely won't do it to memory instead of disk.
Cocoa does not support TGA.

Going the other way is also gnarly, but mostly because I didn't want
to think more than I had to:

1. pasteboard to NSImage
2. NSImage to TIFF
3. TIFF to NSBitmapImageRep
4. NSBitmapImageRep to BMP (in memory)
5. Surface from BMP

Getting a NSBitmapImageRep directly from the NSImage (steps 2+3
combined) is definitely possible without going between TIFF, but I
was too lazy to think about what that would do for vector graphics
(e.g. PDF on the pasteboard) and screen representations. It's not
necessarily true that NSImage will have a NSBitmapImageRep cached
already.

Going from NSBitmapImageRep to a Surface without hitting BMP is
possible, but there's a bunch of formats the NSBitmapImageRep could
be in and I didn't want to think about that either :)

In any case, pygame.scrap is 100% implemented on Mac OS X, and it's
kinda fun to play with. An easy way to test is to take a partial
screen cap to the pasteboard (shift-ctrl-cmd-4) and blit it in your
pygame app. You should be able to bring in anything from the
pasteboard that NSImage can load: icons, jpeg, png, pdf (!), tiff,  
etc.


-bob