MeshLib C++ Docs
Loading...
Searching...
No Matches
MRImage.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRColor.h"
4#include "MRVector2.h"
5#include "MREnums.h"
6#include "MRHeapBytes.h"
7#include <cassert>
8#include <vector>
9
10namespace MR
11{
14
15
18struct Image
19{
20 std::vector<Color> pixels;
21 Vector2i resolution;
22
24 [[nodiscard]] Color& operator[]( const Vector2i & p );
25 [[nodiscard]] Color operator[]( const Vector2i & p ) const;
26
28 [[nodiscard]] size_t heapBytes() const { return MR::heapBytes( pixels ); }
29
32 [[nodiscard]] MRMESH_API Color sampleDiscrete( const UVCoord & pos ) const;
33
36 [[nodiscard]] MRMESH_API Color sampleBilinear( const UVCoord & pos ) const;
37
40 [[nodiscard]] Color sample( FilterType filter, const UVCoord & pos ) const
41 { return filter == FilterType::Discrete ? sampleDiscrete( pos ) : sampleBilinear( pos ); }
42};
43
44inline Color& Image::operator[]( const Vector2i & p )
45{
46 assert( p.x >= 0 && p.x < resolution.x );
47 assert( p.y >= 0 && p.y < resolution.y );
48 return pixels[p.x + p.y * resolution.x];
49}
50
51inline Color Image::operator[]( const Vector2i & p ) const
52{
53 assert( p.x >= 0 && p.x < resolution.x );
54 assert( p.y >= 0 && p.y < resolution.y );
55 return pixels[p.x + p.y * resolution.x];
56}
57
58}
size_t heapBytes(const BitSet &bs)
returns the amount of memory given BitSet occupies on heap
Definition MRBitSet.h:313
MRMESH_API Color sampleBilinear(const UVCoord &pos) const
Vector2i resolution
Definition MRImage.h:21
Color & operator[](const Vector2i &p)
fetches some texture element specified by integer coordinates
Definition MRImage.h:44
FilterType
Definition MREnums.h:12
MRMESH_API Color sampleDiscrete(const UVCoord &pos) const
std::vector< Color > pixels
Definition MRImage.h:20
size_t heapBytes() const
returns the amount of memory this object occupies on heap
Definition MRImage.h:28
Color sample(FilterType filter, const UVCoord &pos) const
Definition MRImage.h:40
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRImage.h:19