Commit Graph
48 Commits
Author SHA1 Message Date
Rudolf Cornelissen b034a8a36c added relaying updated bytes_per_row to BBitmap's properties in case a bitmap was created in the graphics memory (ie: overlay bitmaps). Now not only a bitmap's size is updated, but also the bytes_per_row property itself. Axel, please review and correct as needed. Thanks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-02 13:33:22 +00:00
Axel Dörfler 21c8c925d8 * With Rudolf's information about relocating overlays, I changed the way memory
is managed for those bitmaps:
  - the shared client memory mechanism is used to allocate a small overlay_client_data
    structure that contains the actual buffer and a semaphore that you have acquire in
    order to access it.
  - LockBits()/UnlockBits() now have a function: you need to call them before accessing
    the overlay buffer, and you need to keep that lock until you're done with it.
* The overlay cookie is now an extra member of the ServerBitmap class.
* Removed fInitialized from ServerBitmap - IsValid() now just checks the buffer associated
  with the bitmap.
* ViewLayer::Draw() will now handle overlay bitmaps specially and will draw the overlay
  color instead of any contents (this is currently in ugly pink, but will become some
  dark color later on).
* All what's missing from actually being able to use overlays now is to configure
  them so that they are shown on screen. VLC will now show an empty pink window when
  overlay video is enabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-22 16:41:12 +00:00
Axel Dörfler 37b502f28b Implemented some more overlay support - the overlay bitmap is now allocated
via the graphics driver (but not yet shown on screen).
I probably got the meaning of the "overlay count" wrong - I guess that you
can allocate any number of overlay bitmaps, but can only see "overlay count"
on screen at a time (right now, I only allow to create "overlay count" bitmaps).
Stephan?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-21 20:14:41 +00:00
Stephan Aßmus 3a8e8e427b * Archive() should have been broken, because it didn't add the
class name. Also returns the actual error from the
  BMessage::AddData() if there was any. Please people, correct
  code like that if you spot this elsewhere and don't write
  such code anymore.
* the BMessage constructor should be more robust.
* the copy constructor takes the possibility into account
  that BitsLength() does not match.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17187 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-21 10:14:35 +00:00
Marcus Overhagen 428dcd5b48 Copy the correct number of bytes when making a BBitmap copy. Unfortunately, this still doesn't fix Cortex drawin bug.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-17 15:47:08 +00:00
Stephan Aßmus b57f2b537e * added handy BBitmap::Flags() method
* added NOTE to BBitmap::LockBits(), has anybody some insight into this?
  Otherwise we need to write a test app to discover its secrets... :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17120 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-13 13:15:00 +00:00
Axel Dörfler 9a44fdc97c * Implemented a new client allocation method: instead of having all bitmaps of
all teams in serveral server areas, and instead of having to eventually clone
  them all several times in BBitmap, we now have one or more areas per team,
  and BBitmap will only clone areas once if needed. As a side effect, this
  method should be magnitudes faster than the previous version.
* This method is also much more secure: instead of putting the allocation
  maintenance structures into those everyone-read-write areas, they are now
  separated, so that faulty applications cannot crash the app_server this
  way anymore. This should fix bug #172.
* Freeing memory is not yet implemented though! (although all memory will
  be freed upon app exit)
* There are now 3 different bitmap allocation strategies: per ClientMemoryAllocator
  (ie. via ServerApp), per area (for overlays, not yet implemented), and using
  malloc()/free() for server-only bitmaps.
* ServerBitmap now deletes its buffers itself.
* Cleaned up BBitmap and BApplication a bit.
* The test environment currently doesn't build anymore, will fix it next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16826 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-18 13:43:26 +00:00
Axel Dörfler 0ce9ba6ba3 * BPrivate::ConvertBits() did not take the source or destination bits length
into account when copying to the same color space (new code isn't that fast,
  but it works).
* BBitmap::ImportBits() did not take the specified offset into account at all.
  This fixes bug #313.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-15 23:22:27 +00:00
Stefano Ceccherini e78c06d170 Reverted change 16774 as stippi's wish. The offset should be ignored when drawing bitmaps, but it's obviously not, at least in some case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16781 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-14 08:04:35 +00:00
Stefano Ceccherini 23467f07d9 BBitmap's constructor offsets the passed BRect to B_ORIGIN in case it isn't already. This fixes bug 301. Offset the rect in ChannelSlider too just in case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16774 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-13 20:37:27 +00:00
Michael Lotz 404ccd1a92 Added extended ImportBits() to BBitmap to allow the use of BPoint offsets.
Is this too much feature creep?

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16595 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-06 01:05:47 +00:00
Michael Lotz bdc6f9e7ef * Fixed a swapping bug for 16 bit colorspaces
* Added some comments
* Added some checking to avoid noop shifts
* Added buffer length checks
* Implemented (as Stephan suggested) a version of ConvertBits() that takes offsets.
This new version allows to move a region of the source into a region (possibly not at the same point) on the dest while converting colorspaces on the fly.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16592 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 23:53:33 +00:00
Michael Lotz b09e53fae0 Wrote a new color conversion engine. It's 2-5 times faster than the old one (depending on colorspaces) and about half in size.
I've put it into ColorConversion.cpp and moved PaletteConverter there too, cleaning up Bitmap.cpp.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-05 05:01:15 +00:00
Axel Dörfler f19839c230 Some groundwork for overlay support. If someone wants to finish this, feel
free to continue (it would be nice to be notified before, though, in case
I get to it again in the next weeks).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16561 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-03-01 21:20:57 +00:00
Stephan Aßmus b2f9d1906b using alpha is actually correct
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-06 10:23:26 +00:00
Stefano Ceccherini ccee0bb56d renamed fToken to fAreaOffset and use it instead of fArea for the area offset. Less hacky.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-21 20:30:31 +00:00
Stefano Ceccherini 3276412ef2 Resolved a TODO in BBitmap: now the bitmap area is cloned when needed: i.e. when Bits() or ImportBits() is called. Works fine, but I'd feel better if someone reviewed
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16014 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-21 09:22:15 +00:00
Axel Dörfler ec17c60f5a Added a TODO why our bitmap code is currently pretty inefficient.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15390 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-07 10:50:01 +00:00
Axel Dörfler e7a77b5b71 You also need to delete cloned areas - they are areas like any other (just their
contents are shared)!
Some cleanup. BBitmap::Cleanup() doesn't ask for a reply from the server anymore
(why should it care, anyway?).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15380 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-06 20:12:38 +00:00
Axel Dörfler a77d29375c Put a small TODO into the file: apparently, color_distance() does bad things for
Qemu - the loop to initialize the system color map takes two seconds over here.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-25 15:32:40 +00:00
Axel Dörfler d28dc0ce83 This fixes the build for the libbe_test target - there is no stdint.h in BeOS
(and it shouldn't matter a lot in this case, anyway).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 12:19:30 +00:00
Stephan Aßmus d3b27f09af check if the bitmap size can even be expressed in an int32, set init status to B_BAD_VALUE if not. This works arround a bug in WonderBrush... :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14845 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-11 00:12:32 +00:00
Axel Dörfler 94b0f7f71c Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14768 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-08 01:03:08 +00:00
Marcus Overhagen 89bdf57382 assigned names to "some BLocker"s to aid debugging
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14702 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-04 16:54:21 +00:00
Stephan Aßmus c1ea105142 added alpha support for pixel types and stuff in order to support B_TRANSPARENT_MAGIC_CMAP8 in the system palette... might need review, maybe there is a smarter way. The 0xff entry in the palette has alpha = 0 now
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13472 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 01:41:43 +00:00
Stephan Aßmus 2e6a5805ba MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:30:53 +00:00
Axel Dörfler dd10337fd0 Renamed BAppServerLink to AppServerLink, BPortLink to PortLink, LinkMsgReader
to LinkReceiver, LinkMsgSender to LinkSender, and put everything into the
BPrivate namespace.
Made AppServerLink a cheap object - it will use the applications receiver/sender
and not create its own buffers.
Fixed broken communication stuff here and there (mostly Font.cpp).
Put the newly introduced set|get_system_colors() into the BPrivate namespace -
please don't introduce private functions into the public namespace!!!
Also fixed their broken communication use, as Darkwyrm obviously forgot about
it again: the sequence Flush(); GetNextMessage() without error checking is
purely wrong and can make the app hang and/or crash! :-)
Other minor cleanup.
The input_server used some test mode with the haiku build target which is
probably wrong.
Hopefully I did not forget anything this time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13128 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-14 21:28:56 +00:00
Stefano Ceccherini 38b35d9caa BBitmap now uses the correct (private) BWindow constructor. Partially implemented that constructor. Fixed another typo in BView, verified and removed some TODOs
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12884 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-29 06:32:16 +00:00
Stefano Ceccherini e29cd74b0d Now BBitmap creates a BWindow in case it can accept views. This avoids a crash in the 'DragMe' sample app.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-28 17:41:24 +00:00
Stefano Ceccherini b54a7c449e Stolen Ingo's code and implemented bitmaps_support_space(). Now BBitmap::InitObject() uses that one instead of the private method. I was obviously wrong about bitmaps_support_space() and get_pixel_size_for().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-28 16:57:37 +00:00
Stephan Aßmus 85b226041a Added B_BITMAP_NO_SERVER_LINK to the BBitmap flags. It constructs a BBitmap without a server link, which consequently cannot be drawn by the app_server, but which is nevertheless very useful. It essentially does the same thing as RUN_WITHOUT_APP_SERVER. I also added a CleanUp() function and moved the cleanup code from InitObject() there. CleanUp() is now called in the destructor, which means that the app_server now knows when to free the server side bitmap.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12814 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-25 18:10:20 +00:00
Stefano Ceccherini a84dde4cde Implemeted some methods for BBitmaps which accepts views, got rid of "NOT_IMPLEMENTED". Fixed a warning in ListView.cpp
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11461 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-23 11:23:41 +00:00
haydentech 0aa393f411 Conform to much stricter template rules as required by gcc 3.4 and later
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-18 19:49:39 +00:00
DarkWyrm 64bc6cc549 Checkin for Michael Lotz - implementation of unarchiving constructor
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-29 21:59:58 +00:00
Ingo Weinhold 044be4e258 Introduced a new build flag and macro RUN_WITHOUT_APP_SERVER, to allow
several things to work without a running app server (the Storage Kit to
begin with).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8695 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:18:31 +00:00
DarkWyrm 3ceb31b96a Pahtz's changes from PortLink/BSession/PortMessage/PortQueue to BPortLink
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-07-30 15:15:27 +00:00
Stefano Ceccherini e3a2e77198 Be nice and explain why we don't free fBasePtr. Implemented Area()
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-18 08:36:18 +00:00
Stefano Ceccherini 843f00a15e Removes a crash in the BApplication tests. Some tests work now.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-18 06:34:30 +00:00
DarkWyrm 99991325e3 Bugfixes. AFAIK everything works properly.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-04 21:51:16 +00:00
DarkWyrm 55c8a39e56 Conversion of PortLink::FlushWithReply calls from deprecated API calls
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4934 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-03 22:21:37 +00:00
DarkWyrm edd19f3d5c Removed a few compiler warnings
Added app-side support for font list
Added mostly-empty global font functions and documented them


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-09-01 17:08:34 +00:00
shadow303 19de29789a Updates for changes in PortLink & PortMessage
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3958 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-11 23:14:02 +00:00
haydentech c0b3b8475f major warning reduction for gcc3, plus namespace and other gcc3 fixes
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-11 15:51:59 +00:00
DarkWyrm e30edc5826 Doh! Forgot the Create_Bitmap attachments. I need my coffee...
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2897 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-12 14:00:19 +00:00
DarkWyrm f4ccda5e46 Added bitmap allocation code which talks to the app_server
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2896 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-03-12 13:45:25 +00:00
Ingo Weinhold 435fb4275c Added documentation.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@967 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-09-03 01:10:10 +00:00
Ingo Weinhold e0f91d2b8c Added implementation of SetBits() and new ImportBits() API methods.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-09-01 23:20:49 +00:00
Ingo Weinhold bffaf34afe Initial version of provisional BBitmap implementation. Save SetBits() all functions of current interest are implemented. A helper class for palatte <-> true color conversion is in place. Nothing is tested. Currently not included in the build.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@904 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-08-28 00:42:18 +00:00