~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/gallium/frontends/hgl/bitmap_wrapper.cpp

  • Committer: mmach
  • Date: 2022-09-22 19:56:13 UTC
  • Revision ID: netbit73@gmail.com-20220922195613-wtik9mmy20tmor0i
2022-09-22 21:17:09

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**************************************************************************
2
 
 *
3
 
 * Copyright 2009 Artur Wyszynski <harakash@gmail.com>
4
 
 * Copyright 2013 Alexander von Gluck IV <kallisti5@unixzen.com>
5
 
 *
6
 
 * Permission is hereby granted, free of charge, to any person obtaining a
7
 
 * copy of this software and associated documentation files (the
8
 
 * "Software"), to deal in the Software without restriction, including
9
 
 * without limitation the rights to use, copy, modify, merge, publish,
10
 
 * distribute, sub license, and/or sell copies of the Software, and to
11
 
 * permit persons to whom the Software is furnished to do so, subject to
12
 
 * the following conditions:
13
 
 *
14
 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
 
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
 
 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17
 
 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18
 
 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
 
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
 
 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21
 
 *
22
 
 * The above copyright notice and this permission notice (including the
23
 
 * next paragraph) shall be included in all copies or substantial portions
24
 
 * of the Software.
25
 
 *
26
 
 **************************************************************************/
27
 
 
28
 
 
29
 
#include <stdio.h>
30
 
#include <interface/Bitmap.h>
31
 
#include <storage/File.h>
32
 
#include <support/String.h>
33
 
#include <translation/BitmapStream.h>
34
 
#include <translation/TranslatorRoster.h>
35
 
 
36
 
#include "bitmap_wrapper.h"
37
 
 
38
 
 
39
 
extern "C" {
40
 
static int frameNo = 0;
41
 
 
42
 
 
43
 
Bitmap*
44
 
create_bitmap(int32 width, int32 height, color_space colorSpace)
45
 
{
46
 
        BBitmap *bb = new BBitmap(BRect(0, 0, width, height), colorSpace);
47
 
        if (bb)
48
 
                return (Bitmap*)bb;
49
 
        return NULL;
50
 
}
51
 
 
52
 
 
53
 
void
54
 
get_bitmap_size(const Bitmap* bitmap, int32* width, int32* height)
55
 
{
56
 
        BBitmap *bb = (BBitmap*)bitmap;
57
 
        if (bb && width && height) {
58
 
                uint32 w = bb->Bounds().IntegerWidth() + 1;
59
 
                uint32 h = bb->Bounds().IntegerHeight() + 1;
60
 
                *width = w;
61
 
                *height = h;
62
 
        }
63
 
}
64
 
 
65
 
 
66
 
color_space
67
 
get_bitmap_color_space(const Bitmap* bitmap)
68
 
{
69
 
        BBitmap *bb = (BBitmap*)bitmap;
70
 
        if (bb)
71
 
                return bb->ColorSpace();
72
 
        return B_NO_COLOR_SPACE;
73
 
}
74
 
 
75
 
 
76
 
void
77
 
copy_bitmap_bits(const Bitmap* bitmap, void* data, int32 length)
78
 
{
79
 
        BBitmap *bb = (BBitmap*)bitmap;
80
 
 
81
 
        // We assume the data is 1:1 the format of the bitmap
82
 
        if (bb)
83
 
                bb->ImportBits(data, length, bb->BytesPerRow(), 0, bb->ColorSpace());
84
 
}
85
 
 
86
 
 
87
 
void
88
 
import_bitmap_bits(const Bitmap* bitmap, void* data, int32 length,
89
 
        unsigned srcStride, color_space srcColorSpace)
90
 
{
91
 
        BBitmap *bb = (BBitmap*)bitmap;
92
 
 
93
 
        // Import image and adjust image format from source to dest
94
 
        if (bb)
95
 
                bb->ImportBits(data, length, srcStride, 0, srcColorSpace);
96
 
}
97
 
 
98
 
 
99
 
void
100
 
delete_bitmap(Bitmap* bitmap)
101
 
{
102
 
        BBitmap *bb = (BBitmap*)bitmap;
103
 
        delete bb;
104
 
}
105
 
 
106
 
 
107
 
int32
108
 
get_bitmap_bytes_per_row(const Bitmap* bitmap)
109
 
{
110
 
        BBitmap *bb = (BBitmap*)bitmap;
111
 
        if (bb)
112
 
                return bb->BytesPerRow();
113
 
        return 0;
114
 
}
115
 
 
116
 
 
117
 
int32
118
 
get_bitmap_bits_length(const Bitmap* bitmap)
119
 
{
120
 
        BBitmap *bb = (BBitmap*)bitmap;
121
 
        if (bb)
122
 
                return bb->BitsLength();
123
 
        return 0;
124
 
}
125
 
 
126
 
 
127
 
void
128
 
dump_bitmap(const Bitmap* bitmap)
129
 
{
130
 
        BBitmap *bb = (BBitmap*)bitmap;
131
 
        if (!bb)
132
 
                return;
133
 
 
134
 
        BString filename("/boot/home/frame_");
135
 
        filename << (int32)frameNo << ".png";
136
 
 
137
 
        BTranslatorRoster *roster = BTranslatorRoster::Default();
138
 
        BBitmapStream stream(bb);
139
 
        BFile dump(filename, B_CREATE_FILE | B_WRITE_ONLY);
140
 
 
141
 
        roster->Translate(&stream, NULL, NULL, &dump, 0);
142
 
 
143
 
        frameNo++;
144
 
}
145
 
 
146
 
}