1e76d86d5SStephan Aßmus#include <DirectWindow.h>
2e76d86d5SStephan Aßmus
3e76d86d5SStephan Aßmus#include "DirectWindowBuffer.h"
4e76d86d5SStephan Aßmus
5e76d86d5SStephan Aßmus// constructor
6e76d86d5SStephan AßmusDirectWindowBuffer::DirectWindowBuffer()
7e76d86d5SStephan Aßmus	: fBits(NULL),
8e76d86d5SStephan Aßmus	  fWidth(0),
9e76d86d5SStephan Aßmus	  fHeight(0),
10e76d86d5SStephan Aßmus	  fBytesPerRow(0),
11e76d86d5SStephan Aßmus	  fFormat(B_NO_COLOR_SPACE),
12e76d86d5SStephan Aßmus	  fWindowClipping()
13e76d86d5SStephan Aßmus{
14e76d86d5SStephan Aßmus}
15e76d86d5SStephan Aßmus
16e76d86d5SStephan Aßmus// destructor
17e76d86d5SStephan AßmusDirectWindowBuffer::~DirectWindowBuffer()
18e76d86d5SStephan Aßmus{
19e76d86d5SStephan Aßmus}
20e76d86d5SStephan Aßmus
21e76d86d5SStephan Aßmus// InitCheck
22e76d86d5SStephan Aßmusstatus_t
23e76d86d5SStephan AßmusDirectWindowBuffer::InitCheck() const
24e76d86d5SStephan Aßmus{
25e76d86d5SStephan Aßmus	if (fBits)
26e76d86d5SStephan Aßmus		return B_OK;
27e76d86d5SStephan Aßmus
28e76d86d5SStephan Aßmus	return B_NO_INIT;
29e76d86d5SStephan Aßmus}
30e76d86d5SStephan Aßmus
31e76d86d5SStephan Aßmus// ColorSpace
32e76d86d5SStephan Aßmuscolor_space
33e76d86d5SStephan AßmusDirectWindowBuffer::ColorSpace() const
34e76d86d5SStephan Aßmus{
35e76d86d5SStephan Aßmus	return fFormat;
36e76d86d5SStephan Aßmus}
37e76d86d5SStephan Aßmus
38e76d86d5SStephan Aßmus// Bits
39e76d86d5SStephan Aßmusvoid*
40e76d86d5SStephan AßmusDirectWindowBuffer::Bits() const
41e76d86d5SStephan Aßmus{
42e76d86d5SStephan Aßmus	return fBits;
43e76d86d5SStephan Aßmus}
44e76d86d5SStephan Aßmus
45e76d86d5SStephan Aßmus// BytesPerRow
46e76d86d5SStephan Aßmusuint32
47e76d86d5SStephan AßmusDirectWindowBuffer::BytesPerRow() const
48e76d86d5SStephan Aßmus{
49e76d86d5SStephan Aßmus	return fBytesPerRow;
50e76d86d5SStephan Aßmus}
51e76d86d5SStephan Aßmus
52e76d86d5SStephan Aßmus// Width
53e76d86d5SStephan Aßmusuint32
54e76d86d5SStephan AßmusDirectWindowBuffer::Width() const
55e76d86d5SStephan Aßmus{
56e76d86d5SStephan Aßmus	return fWidth;
57e76d86d5SStephan Aßmus}
58e76d86d5SStephan Aßmus
59e76d86d5SStephan Aßmus// Height
60e76d86d5SStephan Aßmusuint32
61e76d86d5SStephan AßmusDirectWindowBuffer::Height() const
62e76d86d5SStephan Aßmus{
63e76d86d5SStephan Aßmus	return fHeight;
64e76d86d5SStephan Aßmus}
65e76d86d5SStephan Aßmus
66e76d86d5SStephan Aßmus// Set
67e76d86d5SStephan Aßmusvoid
68e76d86d5SStephan AßmusDirectWindowBuffer::SetTo(direct_buffer_info* info)
69e76d86d5SStephan Aßmus{
70e76d86d5SStephan Aßmus	fWindowClipping.MakeEmpty();
71e76d86d5SStephan Aßmus
72e76d86d5SStephan Aßmus	if (info) {
73e76d86d5SStephan Aßmus		int32 xOffset = info->window_bounds.left;
74e76d86d5SStephan Aßmus		int32 yOffset = info->window_bounds.top;
75e76d86d5SStephan Aßmus		// Get clipping information
76e76d86d5SStephan Aßmus		for (int32 i = 0; i < info->clip_list_count; i++) {
77e76d86d5SStephan Aßmus			fWindowClipping.Include(info->clip_list[i]);
78e76d86d5SStephan Aßmus		}
79e76d86d5SStephan Aßmus		fBytesPerRow = info->bytes_per_row;
80e76d86d5SStephan Aßmus		fBits = (void*)info->bits;
81e76d86d5SStephan Aßmus		fFormat = info->pixel_format;
82e76d86d5SStephan Aßmus	//	fBounds = info->window_bounds;
83e76d86d5SStephan Aßmus	//	fDirty = true;
84e76d86d5SStephan Aßmus		fWidth = info->window_bounds.right - info->window_bounds.left + 1;
85e76d86d5SStephan Aßmus		fHeight = info->window_bounds.bottom - info->window_bounds.top + 1;
86e76d86d5SStephan Aßmus	} else {
87e76d86d5SStephan Aßmus		fBits = NULL;
88e76d86d5SStephan Aßmus		fWidth = 0;
89e76d86d5SStephan Aßmus		fHeight = 0;
90e76d86d5SStephan Aßmus		fBytesPerRow = 0;
91e76d86d5SStephan Aßmus		fFormat = B_NO_COLOR_SPACE;
92e76d86d5SStephan Aßmus	}
93e76d86d5SStephan Aßmus}
94e76d86d5SStephan Aßmus
95