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{
12
15struct Image
16{
17 std::vector<Color> pixels;
18 Vector2i resolution;
19
21 [[nodiscard]] Color& operator[]( const Vector2i & p );
22 [[nodiscard]] Color operator[]( const Vector2i & p ) const;
23
25 [[nodiscard]] size_t heapBytes() const { return MR::heapBytes( pixels ); }
26
29 [[nodiscard]] MRMESH_API Color sampleDiscrete( const UVCoord & pos ) const;
30
33 [[nodiscard]] MRMESH_API Color sampleBilinear( const UVCoord & pos ) const;
34
37 [[nodiscard]] Color sample( FilterType filter, const UVCoord & pos ) const
38 { return filter == FilterType::Discrete ? sampleDiscrete( pos ) : sampleBilinear( pos ); }
39};
40
41inline Color& Image::operator[]( const Vector2i & p )
42{
43 assert( p.x >= 0 && p.x < resolution.x );
44 assert( p.y >= 0 && p.y < resolution.y );
45 return pixels[p.x + p.y * resolution.x];
46}
47
48inline Color Image::operator[]( const Vector2i & p ) const
49{
50 assert( p.x >= 0 && p.x < resolution.x );
51 assert( p.y >= 0 && p.y < resolution.y );
52 return pixels[p.x + p.y * resolution.x];
53}
54
55} //namespace MR
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
size_t heapBytes(const BitSet &bs)
returns the amount of memory given BitSet occupies on heap
Definition MRMesh/MRBitSet.h:294
Definition MRCameraOrientationPlugin.h:8
FilterType
Definition MREnums.h:9
Vector2f UVCoord
Definition MRMesh/MRMeshFwd.h:505
Definition MRMesh/MRColor.h:9
Definition MRImage.h:16
MRMESH_API Color sampleBilinear(const UVCoord &pos) const
Vector2i resolution
Definition MRImage.h:18
Color & operator[](const Vector2i &p)
fetches some texture element specified by integer coordinates
Definition MRImage.h:41
MRMESH_API Color sampleDiscrete(const UVCoord &pos) const
std::vector< Color > pixels
Definition MRImage.h:17
size_t heapBytes() const
returns the amount of memory this object occupies on heap
Definition MRImage.h:25
Color sample(FilterType filter, const UVCoord &pos) const
Definition MRImage.h:37