Author Topic: Transparent splash screen  (Read 22834 times)

Offline PsYhLo

  • Almost regular
  • **
  • Posts: 157
Re: Transparent splash screen
« Reply #15 on: November 17, 2006, 06:45:26 pm »
yes just like my
I was thinking this is because gtk-qt engine
It looks like some kind of bug to me :D


Sorry for my bad english

sethjackson

  • Guest
Re: Transparent splash screen
« Reply #16 on: November 17, 2006, 07:09:32 pm »
It looks sorta like that in the about dialog on Windows....... :P

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: Transparent splash screen
« Reply #17 on: November 17, 2006, 07:38:59 pm »
Although I like the new design of the splash screen, is it really supposed to look like that?  :D
What the hell, I replied to your post 10 minutes ago, where did it go???
Anyway: No, I had hoped it would look better after 3221  :?

The idea behind this screen (you get it) is to have a less fuzzy outline that can be region-skinned with simple CSG (4 rectangles, available on every platform). Unluckily, in reality, region skinning did nothing at all under Windows, so I emulated it with setting the DC's clip region.
As Yiannis later reported, this does not work for Linux, so I added region-skinning on top (both methods used now). Unluckily, I still have acute Linux shortage, so I can't test :(

Quote
Testet on Linux with wxGTK 2.6.2, gcc 4.1.1 and revision, well, you probably can see that. :P
Lol, was about to ask "what version" :)

Could you give it a try please? If nothing helps, one could GetHandle() on the window and use GTK's native function to apply the region. However, it might be that SetBackgroundStyle() in line 121, which used to be the "GTK enabling hack" is the actual cause of this. Or, one might skip OnEraseBackground() entirely, maybe that grey is really some background drawing (which, for some reason draws outside the region?).


It looks sorta like that in the about dialog on Windows....... :P
Yes, but that's unrelated.
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline Der Meister

  • Regular
  • ***
  • Posts: 307
Re: Transparent splash screen
« Reply #18 on: November 17, 2006, 08:01:48 pm »
Could you give it a try please? If nothing helps, one could GetHandle() on the window and use GTK's native function to apply the region. However, it might be that SetBackgroundStyle() in line 121, which used to be the "GTK enabling hack" is the actual cause of this. Or, one might skip OnEraseBackground() entirely, maybe that grey is really some background drawing (which, for some reason draws outside the region?).
I will have a look at it. Let's hope I find something usefull ;)
Real Programmers don't comment their code. If it was hard to write, it should be hard to understand.
Real Programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12.

Offline Der Meister

  • Regular
  • ***
  • Posts: 307
Re: Transparent splash screen
« Reply #19 on: November 17, 2006, 09:27:47 pm »

Got it!  :D

Here is the patch that works for me:
Code
Index: src/src/splashscreen.cpp
===================================================================
--- src/src/splashscreen.cpp    (revision 3230)
+++ src/src/splashscreen.cpp    (working copy)
@@ -22,7 +22,7 @@
   static const wxString release(wxT(RELEASE));
   static const wxString revision(wxT(SVN_REVISION));
 
-  dc.SetClippingRegion(r);
+  dc.DestroyClippingRegion();
   dc.DrawBitmap(m_label, 0, 0, false);
 
   wxFont largeFont(16, wxSWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD);

Anyway, I noticed that removing the code in OnEraseBackground does not change anything for me. It seems not necessary, at least on my system.

Another strange thing is that SetRegion always returns FALSE here, even with a simple rectangular region. Seems as wxGTK does not implement this function. (As the documentation says, it only works if the platform supports it.)
Real Programmers don't comment their code. If it was hard to write, it should be hard to understand.
Real Programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12.

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9694
Re: Transparent splash screen
« Reply #20 on: November 18, 2006, 10:58:21 am »
Got it!  :D
Thomas: Is this also something we had forgotten to test for the about dialog??? Should I start over again and loose another 3 hours? ;-)
With regards, Morten.
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: Transparent splash screen
« Reply #21 on: November 18, 2006, 12:01:14 pm »
Got it!  :D

Here is the patch that works for me:
Great, thank you :)
Hmm... instead of destroying the clip region right after creating one, shouldn't it work to never create one, too? I'll try that approach (so, only use clip for Windows). Please complain if it doesn't work nicely.  :)

Quote
Another strange thing is that SetRegion always returns FALSE here, even with a simple rectangular region. Seems as wxGTK does not implement this function. (As the documentation says, it only works if the platform supports it.)
Isn't that what Window::shape_combine_region does?
It says: "Makes pixels in window outside shape_region be transparent, so that the window may be nonrectangular.". Strange... but whatever... if we got it to work, it's fine either way:)

Thomas: Is this also something we had forgotten to test for the about dialog??? Should I start over again and loose another 3 hours? ;-)
With regards, Morten.
No, that's a different issue, I think. Why don't you just commit the version you had which worked (without all the double-buffering and stuff). We can always add the overlay stacking another control onto it later (less work).

"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline MortenMacFly

  • Administrator
  • Lives here!
  • *****
  • Posts: 9694
Re: Transparent splash screen
« Reply #22 on: November 18, 2006, 12:24:10 pm »
Why don't you just commit the version you had which worked (without all the double-buffering and stuff).
Well... erm... because did that already some days ago?! ;-) Anyway: The version that "worked" was nothing else than changing the XRC and pointing to the other image in the code. Everything else I tried didn't work. As soon as I used wxMemoryDC and consorts I ran into trouble.
With regards, Morten.
Compiler logging: Settings->Compiler & Debugger->tab "Other"->Compiler logging="Full command line"
C::B Manual: https://www.codeblocks.org/docs/main_codeblocks_en.html
C::B FAQ: https://wiki.codeblocks.org/index.php?title=FAQ

Offline Der Meister

  • Regular
  • ***
  • Posts: 307
Re: Transparent splash screen
« Reply #23 on: November 18, 2006, 02:47:09 pm »
Hmm... instead of destroying the clip region right after creating one, shouldn't it work to never create one, too? I'll try that approach (so, only use clip for Windows). Please complain if it doesn't work nicely.  :)
Just tested with revision 3234 and it seems to work as it should. :)
Real Programmers don't comment their code. If it was hard to write, it should be hard to understand.
Real Programmers don't write in BASIC. Actually, no programmers write in BASIC, after the age of 12.

Offline afb

  • Developer
  • Lives here!
  • *****
  • Posts: 884
Re: Transparent splash screen
« Reply #24 on: November 22, 2006, 09:48:10 pm »
This splash window doesn't work OK in wxMac, and seems to be crashing under wx 2.8.0 so I'm going back to the wxFRAME_SHAPED on wxMac. It's pretty much the same, just set's a different window style and avoids the "copy from screen" hack (that crashes). http://www.algonet.se/~afb/wx/codeblocks-shapedsplash-new.patch

After patching:
« Last Edit: November 22, 2006, 10:42:31 pm by afb »

Offline afb

  • Developer
  • Lives here!
  • *****
  • Posts: 884
Re: Transparent splash screen
« Reply #25 on: November 27, 2006, 09:47:32 pm »
I've patched for wxMac now, so only little issues remain:
  • It's drawn with a black background, so it looks a little "grey". Maybe clear to white first ?
  • It's centered against the parent window in the Finder, and not against the entire screen...

Too bad that wxWidgets doesn't do alpha windows on wxMac yet, but maybe in wx 2.8.1 or so ?

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: Transparent splash screen
« Reply #26 on: November 27, 2006, 11:01:43 pm »
t's drawn with a black background, so it looks a little "grey". Maybe clear to white first ?
Yes, please do :)

Quote
It's centered against the parent window in the Finder, and not against the entire screen...
Does it matter so much? I figure center on screen is similarly nasty to do as on other platforms... but if you can fix it, sure :)
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline afb

  • Developer
  • Lives here!
  • *****
  • Posts: 884
Re: Transparent splash screen
« Reply #27 on: November 27, 2006, 11:16:05 pm »
Does it matter so much?

In a word: no :-)