Commit Graph

47 Commits

Author SHA1 Message Date
Stephan Aßmus
359c905c57 offscreen bitmaps work, tested on Haiku as well, supports all colorspaces that BBitmap::ImportBits() supports. It uses a fallback for non-B_RGB(A)32 bitmaps. Added support for B_SUB_PIXEL_PRECISION view flags, though it is a bit hacky, since I had to add it to LayerData, even though it is not a true part of stack data. Added Layer::SetFlags() to enforce code path and update fLayerData. Cleaned up DisplayDriverPainter and DisplayDriver API (changed some const BRect& rect to simply BRect rect in order to be able to reuse it in the code), moved Painter.h, the test environment only draws the changed part of the frame buffer again - this causes a lot less CPU overhead, Painter special cases stroke width of 1.0 to use square caps, which is similar to R5 implementation and removes a lot of problems with non-straight line drawing, ServerWindow uses the DisplayDriver from it's WinBorder instead of the one from the Desktop (needed for offscreen windows, which have their own DisplayDriverPainter), it also checks for GetRootLayer() == NULL, because offscreen layers are not attached to a RootLayer, there was a fix for scrolling which worked at least in the test environment, it is now defunced, because Adi moved _CopyBits to Layer... I need to reenable it later, LayerData has no more fEscapementDelta, also fixed fFontAliasing (which was thought to overriding the font flags, and now works as such again), Desktop initialises the menu_info and scroll_bar_info stuff, which makes ScrollBars work actually... hope I didn't forget something.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13448 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:17:16 +00:00
Stephan Aßmus
3dcb3b079a Added some root layer locking in ServerWindow.cpp when accessing the layer tree. Moved HWInterface management out of DisplayDriverPainter and into Desktop. Removed all the directly hardware related functions from DisplayDriver API. They just called the same HWInterface functions. Now DisplayDriver is much cleaner and ready for being attached to a yet to be written BitmapHWInterface. Clean up of the display mode stuff in Screen and the View-/AccelerantHWInterface. Frequency is now regarded on Haiku. AccelerantHWInterface::GetModeList now works before SetMode has been called. Added MultiLocker from the sample code. HWInterface uses it now in preparation to being used from multiple instances of DisplayDriver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13252 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-23 23:46:17 +00:00
Axel Dörfler
e5b4782b4e Made some necessary enhancements to class Screen; the app_server also
has to care about refresh rates. Also changed Screen::GetMode() (formerly
Resolution()) to return all interesting values, so that hopefully no one
will call it anymore like RootLayer::SetScreens() did.
Greatly improved the horrible RootLayer::SetScreens().
The app_server is now able to deal with failing HWInterface::SetMode() calls;
in this case, it will fall back to the hardware's current mode. This now
also works correctly in combination with the vesa driver, so that you don't
have to compile the app_server with the same resolution you boot in anymore.
SetMode() now always returns if it succeeded or not.
Renamed RootLayer::fScreenXYResolution to fScreenWidth/Height respectively.
Removed the useless DisplayDriver::DisplayMode() method.
Added B_GET_DISPLAY_MODE to the required accelerant hooks.
Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12831 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-26 09:21:51 +00:00
Stephan Aßmus
9962b67e5f DisplayDriver::DrawBitmap() takes no more region, the clipping is expected to be already set, as with all other drawing functions. Moved bitmap drawing message dispatching in the drawing messages area, where the correct clipping is set too. Moved cases for messages that don't need clipping applied, ie which don't draw anything, into the normal dispatch function. This means SetHighColor() and so on will no longer rebuild the clipping in Painter. Would be interesting to know how much performance this had cost...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-20 00:09:59 +00:00
DarkWyrm
4a03616356 Added a StringWidth method variant
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12569 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-04 09:40:32 +00:00
Stephan Aßmus
dd3b1653a0 rearranged some functions, removed unused ones
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-03 21:50:14 +00:00
Stephan Aßmus
93a2cfd43c Correct implementation of BView::CopyBits() in ServerWindow, implementation of CopyRegion in DisplayDriverPainter that sorts the rects topologically depending on direction and does the copy in place, obtaining a speedup of about 250%. TODO: extract the sorting algorithm so that it can be reused for the hardware accelerated version later.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12468 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-26 13:50:34 +00:00
Stephan Aßmus
387242437d moved more old stuff which isn't used anymore
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-18 19:16:11 +00:00
Stephan Aßmus
643d10bb64 Added a big TODO comment, StrokeLine takes now non-const DrawData.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12341 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-04-12 08:28:25 +00:00
Stephan Aßmus
0cabce17c3 fixed some font related problems, Painter should now rely on the app_server font manager. maybe I fixed some compile problems too. Sorry if that was the case.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 22:58:09 +00:00
Stephan Aßmus
127b4b0a4b moved more of the old stuff from DisplayDriver into DisplayDriverImpl
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 22:22:44 +00:00
Stephan Aßmus
e33b8950a0 removed const declaration to allow locking in DisplayDriverPainter, as I think access to this needs to be serialized
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12139 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-29 22:00:48 +00:00
Stephan Aßmus
31f3fbc45c moved original cursor stuff into DisplayDriverImpl, now DisplayDriver is pretty much all abstract
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12106 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-28 18:03:04 +00:00
Stephan Aßmus
197f82a8fe sorry, forgot to commit the move of the locking implementation
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12093 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-28 13:43:39 +00:00
Stephan Aßmus
7814396f35 moved two rather important functions up in the header
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-26 22:03:19 +00:00
Stephan Aßmus
1f154920f6 step 3, exracted code from DisplayDriver into DisplayDriverImpl, adjusted the existing implementations to derive from the new class, got rid of some "friend" stuff along the way, essentially I made room for the new Painter based DisplayDriver implementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11987 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 17:29:45 +00:00
Stephan Aßmus
f0a0f2a462 second step, all unused stuff is actually removed from DisplayDriver.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 13:28:12 +00:00
Stephan Aßmus
f3b44aede9 as a first step, all appearently unused calls are commented outfrom DisplayDriver and derived classes
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@11981 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-03-25 13:15:33 +00:00
DarkWyrm
2418b1a07b Added a method to get the cursor position
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9812 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-11-06 19:44:49 +00:00
DarkWyrm
8373d74bdc Updated DrawString to modify the pen position in the DrawData parameter
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9381 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-16 22:38:43 +00:00
DarkWyrm
cf5f46ff73 Updated StrokeLineArray API to make life easier in calling on server side
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9374 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-10-16 01:57:13 +00:00
DarkWyrm
66133bb5d9 s/OpenBeOS/Haiku/
Style fixes for ServerBitmap and ServerCursor
Assignment operator for GraphicsBuffer


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-20 22:46:37 +00:00
DarkWyrm
f06ff64b1a Set the API for stroke/fill shape
Made a couple API tweaks for stroke/fill polygon
Added a Frame() method to BezierCurve to be able handle polygon API tweaks


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8989 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-09-17 10:20:14 +00:00
DarkWyrm
33cbe8bb6c Moved a number of classes for DisplayDriver support into DisplaySupport.h
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8540 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-07 20:28:03 +00:00
DarkWyrm
557b47b2d0 Janitorial work in DisplayDriver.h
Added a #define to ServerConfig for workspace data file


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8171 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-06-26 02:13:58 +00:00
shadow303
225784b713 Minor tweaks to StrokePoint and StrokeSolidLine parameters.
Rename clippReg to clipReg


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7621 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-05-20 01:28:17 +00:00
DarkWyrm
1b4ec3a38b Checkin for Caz (without pain, even!) which adds DrawBitmap support
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-16 17:53:10 +00:00
Adi Oanca
ac903216d7 fixed a bug where a bitmap was mising a pixel line/column
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7158 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-04 20:23:12 +00:00
Adi Oanca
9d5fb2696a consted some parameters
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7148 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-03 15:04:28 +00:00
Adi Oanca
8a2b8a4355 * added a temporaly method for constraining the clipping region.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7077 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-28 14:35:13 +00:00
shadow303
52c2367204 Remove some remnants of old API
Minor tweak to helper function paramter list


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-01 02:19:48 +00:00
Adi Oanca
82cde293d6 added a method fo copying onscreen regions from one point to another
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6718 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-24 11:50:10 +00:00
DarkWyrm
14ef62299d Implemented and fixed font functions in DisplayDriver
Added some copy functions to ServerBitmap
Replaced LayerData component of Decorator with DrawData


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6601 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-15 20:26:01 +00:00
DarkWyrm
2bde7b6696 Removed the SetMode(int32) call - no longer necessary
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-12 01:22:47 +00:00
DarkWyrm
70b9b61f23 Made some ServerBitmap get-member functions const
Added UtilityBitmap class


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-07 13:47:52 +00:00
DarkWyrm
871efa51a3 Added some direct-buffer acces functions to DisplayDriver
Slight ServerFont tweak


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-03 00:51:23 +00:00
DarkWyrm
c57a2cdc69 Removed pattern parameter from state-based calls. DrawData already has one
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6383 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-28 02:06:42 +00:00
DarkWyrm
f9de45c608 Major overhaul of the DisplayDriver API
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6336 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-27 00:39:41 +00:00
Adi Oanca
937e6b3e56 I don't know what's wrong with this file... maybe a TAB character? It's identical to the one in CVS
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-13 00:08:01 +00:00
DarkWyrm
3df88aae3d Integrated Adi's new desktop code
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6022 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-11 22:08:53 +00:00
DarkWyrm
e0712711bc Minor API tweak : RGBColor &color -> const RGBColor &color
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-01-10 17:07:37 +00:00
shadow303
75377c98c5 Convert to LayerData independent drawing API
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-12-07 03:19:50 +00:00
DarkWyrm
840db4bded Added new methods related to DPMS and device capabilities
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-11-22 00:43:54 +00:00
shadow303
a2d01f224f Add GetColor15 to RGBColor
Prep DisplayDriver for consolidated driver code


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-11-03 01:55:14 +00:00
DarkWyrm
10aef7cbc0 Retooled pattern passing - much neater now. :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4119 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-28 19:13:24 +00:00
DarkWyrm
e81c16a881 Made locking/unlocking publically accessible
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4115 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-28 17:05:09 +00:00
DarkWyrm
9381d29b6f Massive reconfiguring to fix link problems with all things needing app_server so
urces


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3963 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-13 20:56:00 +00:00