[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    Re: [PATCH] Transparency support and bugfixes
From:       "Yannai A. Gonczarowski" <yannaigo () leyada ! jlm ! k12 ! il>
Date:       1999-02-21 19:42:01
[Download RAW message or body]

Haven't checked it yet, but this is something I have been waiting for for a
long time.
Can someone with CVS access check this out and if he/she decides this is
okay, commit?

Geert Jansen wrote:
> 
>             ==> Transparency support and bugfixes <==
> 
> Dear KDE developers,
> 
>   appended to this message is a patch that allows KDE programs to emulate
> transparent windows in a not too resource intensive and easy way. It also
> contains some bugfixes for kcmdisplay and kbgndwm.
> 
> Why?
> 
> Just for fun. Also, because there seems to be increasing demand for
> attractive desktops and transparent windows can IMHO contribute to that.
> Modern machines with much memory can easily handle it while it is per
> default disabled to be suitable for low-end machines.
> 
> How?
> 
> The only functionality needed to emulate transparent windows is that a (KDE)
> program can access a Pixmap of the desktop background. Before I came up with
> the final design, I tried a couple of things, they all failed:
> 
> * The application cannot access qApp->desktop()->getBackgroundPixmap()
>   because this is not set by the application (but by kbgndwm).
> * You cannot bitBlt() from qApp->desktop() because this will give to icons +
>   windows.
> * You _could_ read the destoprc files and render the background yourself.
>   I think this is extremely ugly and I didn't want to add the rendering code
>   another time (it already exists three times: in kbgndwm, kcmdisplay and
>   in kpager).
> 
> The thing I did is modify kbgndwm so that it exports the desktop as a .ppm
> file to ~/.kde/share/apps/kbgndwm/desktop_x.ppm. I chose .ppm because Qt seems
> not to handle >256 color xpms. Another approach could be to store the
> backgrounds in shared memory. I didn't do this because I wanted to keep this
> first patch simple and also because the QPixmap class does not let you save
> to memory (loading yes, but saving, no).
> 
> Implementation:
> 
> * I changed kbgndwm to export the desktop as a pixmap. Both one desktop and
>   multiple desktop modes are supported. The default for this is off. It must
>   be enabled first in kcmdisplay. I also made sure that when the setting is
>   off, there is absolutely no penalty for having this code in there.
> * I added a member to KApplication, KApplication::getDTBackground. This keeps
>   a per program copy of the background pixmap and takes care of the new
>   KDEChangeBackground client message I added.
> * I added the member function KPixmap::loadDTBackground. This loads the
>   desktop background of a widget and can apply effects such as transparency
>   and transluency to that.
> * I changed kwm (1 line) so that it sends a KDEChangeBackground message to
>   a window that is being transported to another desktop.
> * I added a new file to kdecore, kipc.{cpp,h}. I noticed that the "send a
>   KDE message" functionality was impelemented 4 times in kcmdispay, of those
>   twice in one file so I thought it was a good idea to have this in kdecore.
> * I updated kcmdisplay to allow GUI configuration (one checkbox :) of the
>   backgound exports.
> 
> I also fixed some bugs in kcmdisplay/kbgndwm, please see the changelogs for
> that.
> 
> I attached the patches to this email: kdecore-diff and kdebase-diff. I also
> added a very simple test programme, trans.cpp.
> 
> Please let me know what you think of this patch! Could it be applied to the
> new development branch?
> 
> Thanks,
> Geert Jansen
> 
> --
>     Geert Jansen,                                email: <geertj@stack.nl>
>     Phylosopher and Physicist                      PGP key ID: 0xD2B5E7CE
> 
>   ----------------------------------------------------------------------------
> 
>                              Name: kde-trans.tar.gz
>    kde-trans.tar.gz          Type: Unix Tape Archive (application/x-tar)
>                          Encoding: base64
>                       Description: Patch and test program

-- 


Regards,
Yannai.

----------------------------------------------------------------------
Yannai A. Gonczarowski        _____..---======~~~~~=======---.._____
 ______________________ __,-='=====____  ================ _____=====`=
(._____________________I__) - _-=_/    `--------=+=-------'
    /      /__...---===='---+---_'                System Administrator
   '------'---.___ -  _ =   _.-'            yannaigo@leyada.jlm.k12.il
                  `--------'         The Hebrew University High School
"Si vis pacem, para bellum"    http://www.leyada.jlm.k12.il/~yannaigo/
----------------------------------------------------------------------

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic