memsets(void *vp, ushort val, int n)
{
ushort *p, *ep;
+ uchar b[2];
+
+ /* make little endian */
+ b[0] = val;
+ b[1] = val>>8;
+ val = *(ushort*)b;
p = vp;
ep = p+n;
memsetl(void *vp, ulong val, int n)
{
ulong *p, *ep;
+ uchar b[4];
+
+ /* make little endian */
+ b[0] = val;
+ b[1] = val>>8;
+ b[2] = val>>16;
+ b[3] = val>>24;
+ val = *(ulong*)b;
p = vp;
ep = p+n;
uchar *p, *ep;
uchar a,b,c;
- p = vp;
- ep = p+3*n;
a = val;
b = val>>8;
c = val>>16;
+
+ p = vp;
+ ep = p+3*n;
while(p<ep){
- *p++ = a;
- *p++ = b;
- *p++ = c;
+ p[0] = a;
+ p[1] = b;
+ p[2] = c;
+ p += 3;
}
}
break;
case CMap:
p = img->cmap->cmap2rgb+3*ov;
- r = *p++;
- g = *p++;
- b = *p;
+ r = p[0];
+ g = p[1];
+ b = p[2];
break;
}
}
*/
m = Simplesrc|Simplemask|Fullmask;
if((par->state&m)==m && (par->srgba&0xFF) == 0xFF && (op ==S || op == SoverD)){
- uchar *dp, p[4];
int d, dwid, ppb, np, nb;
- uchar lm, rm;
+ uchar *dp, lm, rm;
DBG print("memopt, dst %p, dst->data->bdata %p\n", dst, dst->data->bdata);
dwid = dst->width*sizeof(ulong);
memset(dp, v, dx);
return 1;
case 16:
- p[0] = v; /* make little endian */
- p[1] = v>>8;
- v = *(ushort*)p;
-DBG print("dp=%p; dx=%d; for(y=0; y<%d; y++, dp+=%d)\nmemsets(dp, v, dx);\n",
- dp, dx, dy, dwid);
for(y=0; y<dy; y++, dp+=dwid)
memsets(dp, v, dx);
return 1;
memset24(dp, v, dx);
return 1;
case 32:
- p[0] = v; /* make little endian */
- p[1] = v>>8;
- p[2] = v>>16;
- p[3] = v>>24;
- v = *(ulong*)p;
for(y=0; y<dy; y++, dp+=dwid)
memsetl(dp, v, dx);
return 1;
static int
chardraw(Memdrawparam *par)
{
- ulong bits;
int i, ddepth, dy, dx, x, bx, ex, y, npack, bsh, depth, op;
- ulong v, maskwid, dstwid;
+ ulong bits, v, maskwid, dstwid;
uchar *wp, *rp, *q, *wc;
ushort *ws;
ulong *wl;