Monopoly — Portage moderne
0.1.0
Portage moderne C/C++23 du Monopoly de 1999
Loading...
Searching...
No Matches
SequenceBitmapRenderData.cpp
Go to the documentation of this file.
1
#include "
SequenceBitmapRenderData.hpp
"
2
#include "
RuntimeBitmapSurface.hpp
"
3
4
namespace
monopoly::sequence
5
{
6
namespace
7
{
8
SequenceBitmapRenderDataError
error
(
9
SequenceBitmapRenderDataErrorCode
code,
10
SequenceNodeId
node,
11
data::DataId
id
,
12
std::string detail)
13
{
14
return
{code, node,
id
, std::move(detail)};
15
}
16
}
17
18
std::expected<std::vector<SequenceBitmapRenderItem>,
19
SequenceBitmapRenderDataError
>
collectSequenceBitmapRenderData
(
20
const
SequenceRuntime
& runtime,
21
std::shared_ptr<const data::ResourceSnapshot> resources,
22
const
data::RuntimeBitmapStore
* runtimeBitmaps)
23
{
24
if
(!resources)
25
return
std::unexpected(
error
(
26
SequenceBitmapRenderDataErrorCode::MissingResources
,
27
0, 0,
"resource snapshot is null"
));
28
29
std::vector<SequenceBitmapRenderItem> result;
30
for
(
const
auto
&
instance
:
runtime
.bitmapInstances())
31
{
32
if
(runtimeBitmaps)
33
{
34
if
(
auto
runtimeAsset = runtimeBitmaps->
asset
(
instance
.contentsDataId))
35
{
36
const
auto
&
image
= runtimeAsset->image;
37
result.push_back({
instance
.node,
instance
.contentsDataId,
38
instance
.priority,
instance
.clock,
instance
.worldTransform,
39
{
data::LegacyDataType::Native
,
image
.width,
image
.height, 0, 0, 32},
40
{}, std::move(runtimeAsset),
instance
.bounds,
41
instance
.rootSequenceDataId,
instance
.rootSequenceNode,
instance
.rootSequencePriority});
42
continue
;
43
}
44
}
45
46
const
auto
metadata
= resources->data().metadata(
instance
.contentsDataId);
47
if
(!
metadata
)
48
return
std::unexpected(
error
(
49
SequenceBitmapRenderDataErrorCode::MetadataFailed
,
50
instance
.node,
instance
.contentsDataId,
metadata
.error().detail));
51
if
(
metadata
->type !=
data::LegacyDataType::Bitmap
&&
52
metadata
->type !=
data::LegacyDataType::Uap
)
53
return
std::unexpected(
error
(
54
SequenceBitmapRenderDataErrorCode::TypeMismatch
,
55
instance
.node,
instance
.contentsDataId,
56
"2D sequence content is neither LE_DATA_DataBMP nor LE_DATA_DataUAP"
));
57
58
const
auto
bytes
= resources->data().load(
instance
.contentsDataId);
59
if
(!
bytes
)
60
return
std::unexpected(
error
(
61
SequenceBitmapRenderDataErrorCode::LoadFailed
,
62
instance
.node,
instance
.contentsDataId,
bytes
.error().detail));
63
64
SequenceBitmapMetadata
renderMetadata
{};
65
renderMetadata
.
type
=
metadata
->type;
66
if
(
metadata
->type ==
data::LegacyDataType::Bitmap
)
67
{
68
const
auto
bitmap
=
data::inspectLegacyBitmap
(**
bytes
);
69
if
(!
bitmap
)
70
return
std::unexpected(
error
(
71
SequenceBitmapRenderDataErrorCode::InvalidBitmap
,
72
instance
.node,
instance
.contentsDataId,
bitmap
.error().detail));
73
renderMetadata
.width =
static_cast<
std::uint32_t
>
(
bitmap
->width);
74
renderMetadata
.height =
static_cast<
std::uint32_t
>
(
75
bitmap
->topDown() ? -
static_cast<
std::int64_t
>
(
bitmap
->height) :
bitmap
->height);
76
renderMetadata
.bitsPerPixel =
bitmap
->bitsPerPixel;
77
}
78
else
79
{
80
const
auto
bitmap
=
data::inspectLegacyUap
(**
bytes
);
81
if
(!
bitmap
)
82
return
std::unexpected(
error
(
83
SequenceBitmapRenderDataErrorCode::InvalidBitmap
,
84
instance
.node,
instance
.contentsDataId,
bitmap
.error().detail));
85
renderMetadata
.width =
bitmap
->width;
86
renderMetadata
.height =
bitmap
->height;
87
renderMetadata
.originX =
instance
.zeroBitmapOffset ? 0 :
bitmap
->originX;
88
renderMetadata
.originY =
instance
.zeroBitmapOffset ? 0 :
bitmap
->originY;
89
renderMetadata
.bitsPerPixel = 8;
90
}
91
92
result.push_back({
instance
.node,
instance
.contentsDataId,
93
instance
.priority,
instance
.clock,
instance
.worldTransform,
94
renderMetadata
, *
bytes
, {},
instance
.bounds,
95
instance
.rootSequenceDataId,
instance
.rootSequenceNode,
instance
.rootSequencePriority});
96
}
97
return
result;
98
}
99
}
metadata
LegacyBitmapMetadata metadata
Definition
BoardTextureRuntime.cpp:16
image
LegacyBitmapRGBA8 image
Definition
BoardTextureRuntime.cpp:17
bytes
std::vector< std::byte > bytes
Definition
BoardTextureRuntime.cpp:15
id
data::DataId id
Definition
EscapeConfirmationPlayback.cpp:13
runtime
fonts::Runtime & runtime
Definition
EuropeanDeed.cpp:45
index
unsigned index
Definition
ModernIBarSkin.cpp:25
RuntimeBitmapSurface.hpp
SequenceBitmapRenderData.hpp
error
std::string error
Definition
StartupResources.cpp:25
monopoly::data::RuntimeBitmapStore
Definition
RuntimeBitmapSurface.hpp:39
monopoly::data::RuntimeBitmapStore::asset
std::shared_ptr< const BitmapRuntimeAsset > asset(DataId id) const noexcept
Definition
RuntimeBitmapSurface.cpp:285
monopoly::sequence::SequenceRuntime
Definition
SequenceRuntime.hpp:274
monopoly::data::DataId
std::uint32_t DataId
Definition
DataBanks.hpp:10
monopoly::data::LegacyDataType::Bitmap
@ Bitmap
monopoly::data::LegacyDataType::Native
@ Native
monopoly::data::LegacyDataType::Uap
@ Uap
monopoly::data::inspectLegacyUap
std::expected< LegacyUapMetadata, BitmapError > inspectLegacyUap(std::span< const std::byte > bytes)
Definition
LegacyBitmap.cpp:128
monopoly::data::inspectLegacyBitmap
std::expected< LegacyBitmapMetadata, BitmapError > inspectLegacyBitmap(std::span< const std::byte > bytes)
Definition
LegacyBitmap.cpp:250
monopoly::sequence
Definition
SequenceBitmapRenderData.cpp:5
monopoly::sequence::SequenceBitmapRenderDataErrorCode
SequenceBitmapRenderDataErrorCode
Definition
SequenceBitmapRenderData.hpp:21
monopoly::sequence::SequenceBitmapRenderDataErrorCode::MissingResources
@ MissingResources
monopoly::sequence::SequenceBitmapRenderDataErrorCode::TypeMismatch
@ TypeMismatch
monopoly::sequence::SequenceBitmapRenderDataErrorCode::LoadFailed
@ LoadFailed
monopoly::sequence::SequenceBitmapRenderDataErrorCode::MetadataFailed
@ MetadataFailed
monopoly::sequence::SequenceBitmapRenderDataErrorCode::InvalidBitmap
@ InvalidBitmap
monopoly::sequence::collectSequenceBitmapRenderData
std::expected< std::vector< SequenceBitmapRenderItem >, SequenceBitmapRenderDataError > collectSequenceBitmapRenderData(const SequenceRuntime &runtime, std::shared_ptr< const data::ResourceSnapshot > resources, const data::RuntimeBitmapStore *runtimeBitmaps)
Definition
SequenceBitmapRenderData.cpp:19
monopoly::sequence::SequenceNodeId
std::uint64_t SequenceNodeId
Definition
SequenceRuntime.hpp:91
monopoly::sequence::SequenceBitmapMetadata
Definition
SequenceBitmapRenderData.hpp:37
monopoly::sequence::SequenceBitmapMetadata::type
data::LegacyDataType type
Definition
SequenceBitmapRenderData.hpp:38
monopoly::sequence::SequenceBitmapRenderDataError
Definition
SequenceBitmapRenderData.hpp:30
SequenceBitmapRenderData.cpp
Generated by
1.9.8