ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/Client.xs
(Generate patch)

Comparing deliantra/Deliantra-Client/Client.xs (file contents):
Revision 1.202 by root, Tue Jul 17 18:34:24 2007 UTC vs.
Revision 1.203 by root, Thu Jul 19 13:45:16 2007 UTC

1258MODULE = CFPlus PACKAGE = CFPlus::Texture 1258MODULE = CFPlus PACKAGE = CFPlus::Texture
1259 1259
1260int minpot (int n) 1260int minpot (int n)
1261 1261
1262void 1262void
1263pad2pot (SV *data_, SV *w_, SV *h_) 1263pad (SV *data_, int ow, int oh, int nw, int nh)
1264 CODE: 1264 CODE:
1265{ 1265{
1266 int ow = SvIV (w_); 1266 if ((nw != ow || nh != oh) && SvOK (data_))
1267 int oh = SvIV (h_);
1268
1269 if (ow && oh)
1270 { 1267 {
1271 int nw = minpot (ow);
1272 int nh = minpot (oh);
1273
1274 if (nw != ow || nh != oh)
1275 {
1276 if (SvOK (data_))
1277 {
1278 STRLEN datalen; 1268 STRLEN datalen;
1279 char *data = SvPVbyte (data_, datalen); 1269 char *data = SvPVbyte (data_, datalen);
1280 int bpp = datalen / (ow * oh); 1270 int bpp = datalen / (ow * oh);
1281 SV *result_ = sv_2mortal (newSV (nw * nh * bpp)); 1271 SV *result_ = sv_2mortal (newSV (nw * nh * bpp));
1282 1272
1283 SvPOK_only (result_); 1273 SvPOK_only (result_);
1284 SvCUR_set (result_, nw * nh * bpp); 1274 SvCUR_set (result_, nw * nh * bpp);
1285 1275
1286 memset (SvPVX (result_), 0, nw * nh * bpp); 1276 memset (SvPVX (result_), 0, nw * nh * bpp);
1287 while (oh--) 1277 while (oh--)
1288 memcpy (SvPVX (result_) + oh * nw * bpp, data + oh * ow * bpp, ow * bpp); 1278 memcpy (SvPVX (result_) + oh * nw * bpp, data + oh * ow * bpp, ow * bpp);
1289 1279
1290 sv_setsv (data_, result_); 1280 sv_setsv (data_, result_);
1291 }
1292
1293 sv_setiv (w_, nw);
1294 sv_setiv (h_, nh);
1295 }
1296 } 1281 }
1297} 1282}
1298 1283
1299void 1284void
1300draw_quad (SV *self, float x, float y, float w = 0., float h = 0.) 1285draw_quad (SV *self, float x, float y, float w = 0., float h = 0.)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines