[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: ayuda con Xlib



On 10 Sep 1998, Miguel de Icaza wrote:

> Imlib hace exactamente eso de una manera óptima.  
> 
> La complicación de usar XImage.data es que debes de tener presente el
> visual, el endianess de cada lado y otros detalles que son harto
> divertidos.  
> 
> Imlib ya hace todas esas cosas por ti.

Gracias por el tip... dando una serie de factores por sentado, pude
convertir esto:

int
transforma(XImage *ximage, unsigned int owidth, unsigned long oheight)
{
  int x, y;
  unsigned long pixel;
  unsigned long *imagen;
  imagen = (unsigned long *) calloc(owidth*oheight,sizeof(pixel));
  for (y=0; y<(int)oheight; y++) {
    for(x=0;x<(int)oheight; x++) {
      *(imagen+((y * (int)owidth)+x)) = XGetPixel(ximage, x, y);
    }
  }
  for (y=0; y<(int)oheight; y++) {
    for(x=(int)oheight;x>=0; x--) {
      XPutPixel(ximage,x,y,*(imagen+((((int)oheight-x) *(int)owidth)+y)));
    }
  }
  free(imagen);
  return 0;
}

en esto otro:

int
transforma2(XImage *ximage, unsigned int owidth, unsigned long oheight)
{
  int x,y;
  unsigned short *imagen;
  imagen = (unsigned short *)malloc((size_t)(owidth*oheight*2));
  memcpy(imagen,ximage->data,(size_t)(owidth*oheight*2));
  for (x=0; x<(int)oheight; x++) {
    for(y=0; y<(int)oheight; y++) {
      *((unsigned short *)ximage->data+((x * (int)owidth)+y)) = *(imagen+((y * (int)owidth)+x));
    }
  }
  free(imagen);
  return 0;
}

La mejoria es sustancial... ¿habra forma de acelerarlo mas?

Saludos,
Raymond




[Hilos de Discusión] [Fecha] [Tema] [Autor]