27class EXPCL_PANDA_GOBJ TexturePeeker :
public ReferenceCount {
29 TexturePeeker(Texture *tex, Texture::CData *cdata);
39 INLINE
bool has_pixel(
int x,
int y)
const;
40 INLINE
bool has_pixel(
int x,
int y,
int z)
const;
41 void lookup(LColor &color, PN_stdfloat u, PN_stdfloat v)
const;
42 void lookup(LColor &color, PN_stdfloat u, PN_stdfloat v, PN_stdfloat w)
const;
43 void fetch_pixel(LColor &color,
int x,
int y)
const;
44 void fetch_pixel(LColor &color,
int x,
int y,
int z)
const;
45 bool lookup_bilinear(LColor &color, PN_stdfloat u, PN_stdfloat v)
const;
47 PN_stdfloat min_u, PN_stdfloat min_v,
48 PN_stdfloat max_u, PN_stdfloat max_v)
const;
50 PN_stdfloat min_u, PN_stdfloat min_v, PN_stdfloat min_w,
51 PN_stdfloat max_u, PN_stdfloat max_v, PN_stdfloat max_w)
const;
54 static void init_rect_minmax(
int &min_x,
int &max_x,
55 PN_stdfloat &min_u, PN_stdfloat &max_u,
58 void accum_filter_z(LColor &color, PN_stdfloat &net,
59 int min_x,
int max_x, PN_stdfloat min_u, PN_stdfloat max_u,
60 int min_y,
int max_y, PN_stdfloat min_v, PN_stdfloat max_v,
61 int min_z,
int max_z, PN_stdfloat min_w, PN_stdfloat max_w)
const;
62 void accum_filter_y(LColor &color, PN_stdfloat &net,
int zi,
63 int min_x,
int max_x, PN_stdfloat min_u, PN_stdfloat max_u,
64 int min_y,
int max_y, PN_stdfloat min_v, PN_stdfloat max_v,
65 PN_stdfloat weight)
const;
66 void accum_filter_x(LColor &color, PN_stdfloat &net,
int yi,
int zi,
67 int min_x,
int max_x, PN_stdfloat min_u, PN_stdfloat max_u,
68 PN_stdfloat weight)
const;
69 void accum_texel(LColor &color, PN_stdfloat &net,
const unsigned char *&p,
70 PN_stdfloat weight)
const;
72 typedef double GetComponentFunc(
const unsigned char *&p);
73 typedef void GetTexelFunc(LColor &color,
const unsigned char *&p,
74 GetComponentFunc *get_component);
76 static void get_texel_r(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
77 static void get_texel_g(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
78 static void get_texel_b(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
79 static void get_texel_a(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
80 static void get_texel_l(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
81 static void get_texel_la(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
82 static void get_texel_rg(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
83 static void get_texel_rgb(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
84 static void get_texel_rgba(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
85 static void get_texel_srgb(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
86 static void get_texel_srgba(LColor &color,
const unsigned char *&p, GetComponentFunc *get_component);
94 Texture::Format _format;
95 Texture::ComponentType _component_type;
98 GetComponentFunc *_get_component;
99 GetTexelFunc *_get_texel;
101 friend class Texture;
int get_y_size() const
Returns the height of the texture image that is contributing to the TexturePeeker's information.
void lookup(LColor &color, PN_stdfloat u, PN_stdfloat v) const
Fills "color" with the RGBA color of the texel at point (u, v).
int get_z_size() const
Returns the depth of the texture image that is contributing to the TexturePeeker's information.
bool is_valid() const
Returns true if the TexturePeeker was able to initialize itself and is ready to return texel colors.
void fetch_pixel(LColor &color, int x, int y) const
Works like TexturePeeker::lookup(), but instead of uv-coordinates, integer coordinates are used.
bool has_pixel(int x, int y) const
Returns whether a given coordinate is inside of the texture dimensions.
int get_x_size() const
Returns the width of the texture image that is contributing to the TexturePeeker's information.
bool lookup_bilinear(LColor &color, PN_stdfloat u, PN_stdfloat v) const
Performs a bilinear lookup to retrieve the color value stored at the uv coordinate (u,...
void filter_rect(LColor &color, PN_stdfloat min_u, PN_stdfloat min_v, PN_stdfloat max_u, PN_stdfloat max_v) const
Fills "color" with the average RGBA color of the texels within the rectangle defined by the specified...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.