⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splash.cc

📁 将pdf文档转换为高质量的html文档
💻 CC
📖 第 1 页 / 共 5 页
字号:
	p[3] = (alpha2 * blend[3] + ialpha2 * p[3]) >> 8;	break;#if SPLASH_CMYK      case splashModeACMYK8:	p = &bitmap->data[y * bitmap->rowSize + 5 * x];	(*blendFunc)(color, p, blend, bitmap->mode);	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	p[3] = (alpha2 * blend[3] + ialpha2 * p[3]) >> 8;	p[4] = (alpha2 * blend[4] + ialpha2 * p[4]) >> 8;	break;#endif      }    } else {      switch (bitmap->mode) {      case splashModeMono1:	p = &bitmap->data[y * bitmap->rowSize + (x >> 3)];	if (color[0]) {	  *p |= 0x80 >> (x & 7);	} else {	  *p &= ~(0x80 >> (x & 7));	}	break;      case splashModeMono8:	p = &bitmap->data[y * bitmap->rowSize + x];	p[0] = color[0];	break;      case splashModeAMono8:	p = &bitmap->data[y * bitmap->rowSize + 2 * x];	p[0] = color[0];	p[1] = color[1];	break;      case splashModeRGB8:      case splashModeBGR8:	p = &bitmap->data[y * bitmap->rowSize + 3 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	break;      case splashModeARGB8:      case splashModeBGRA8:#if SPLASH_CMYK      case splashModeCMYK8:#endif	p = &bitmap->data[y * bitmap->rowSize + 4 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	p[3] = color[3];	break;#if SPLASH_CMYK      case splashModeACMYK8:	p = &bitmap->data[y * bitmap->rowSize + 5 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	p[3] = color[3];	p[4] = color[4];	break;#endif      }    }    updateModX(x);    updateModY(y);  }}void Splash::drawPixel(int x, int y, SplashPattern *pattern,		       SplashCoord alpha, GBool noClip) {  SplashBlendFunc blendFunc;  SplashColor color;  SplashColorPtr p;  SplashColor dest, blend;  int alpha2, ialpha2;  Guchar t;  if (noClip || state->clip->test(x, y)) {    if (alpha != 1 || softMask || state->blendFunc) {      blendFunc = state->blendFunc ? state->blendFunc : &blendNormal;      pattern->getColor(x, y, color);      if (softMask) {	alpha2 = (int)(alpha * softMask->data[y * softMask->rowSize + x]);      } else {	alpha2 = (int)(alpha * 255);      }      ialpha2 = 255 - alpha2;      switch (bitmap->mode) {      case splashModeMono1:	p = &bitmap->data[y * bitmap->rowSize + (x >> 3)];	dest[0] = (*p >> (7 - (x & 7))) & 1;	(*blendFunc)(color, dest, blend, bitmap->mode);	t = (alpha2 * blend[0] + ialpha2 * dest[0]) >> 8;	if (t) {	  *p |= 0x80 >> (x & 7);	} else {	  *p &= ~(0x80 >> (x & 7));	}	break;      case splashModeMono8:	p = &bitmap->data[y * bitmap->rowSize + x];	(*blendFunc)(color, p, blend, bitmap->mode);	// note: floor(x / 255) = x >> 8 (for 16-bit x)	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	break;      case splashModeAMono8:	p = &bitmap->data[y * bitmap->rowSize + 2 * x];	(*blendFunc)(color, p, blend, bitmap->mode);	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	break;      case splashModeRGB8:      case splashModeBGR8:	p = &bitmap->data[y * bitmap->rowSize + 3 * x];	(*blendFunc)(color, p, blend, bitmap->mode);	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	break;      case splashModeARGB8:      case splashModeBGRA8:#if SPLASH_CMYK      case splashModeCMYK8:#endif	p = &bitmap->data[y * bitmap->rowSize + 4 * x];	(*blendFunc)(color, p, blend, bitmap->mode);	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	p[3] = (alpha2 * blend[3] + ialpha2 * p[3]) >> 8;	break;#if SPLASH_CMYK      case splashModeACMYK8:	p = &bitmap->data[y * bitmap->rowSize + 5 * x];	(*blendFunc)(color, p, blend, bitmap->mode);	p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	p[3] = (alpha2 * blend[3] + ialpha2 * p[3]) >> 8;	p[4] = (alpha2 * blend[4] + ialpha2 * p[4]) >> 8;	break;#endif      }    } else {      pattern->getColor(x, y, color);      switch (bitmap->mode) {      case splashModeMono1:	p = &bitmap->data[y * bitmap->rowSize + (x >> 3)];	if (color[0]) {	  *p |= 0x80 >> (x & 7);	} else {	  *p &= ~(0x80 >> (x & 7));	}	break;      case splashModeMono8:	p = &bitmap->data[y * bitmap->rowSize + x];	p[0] = color[0];	break;      case splashModeAMono8:	p = &bitmap->data[y * bitmap->rowSize + 2 * x];	p[0] = color[0];	p[1] = color[1];	break;      case splashModeRGB8:      case splashModeBGR8:	p = &bitmap->data[y * bitmap->rowSize + 3 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	break;      case splashModeARGB8:      case splashModeBGRA8:#if SPLASH_CMYK      case splashModeCMYK8:#endif	p = &bitmap->data[y * bitmap->rowSize + 4 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	p[3] = color[3];	break;#if SPLASH_CMYK      case splashModeACMYK8:	p = &bitmap->data[y * bitmap->rowSize + 5 * x];	p[0] = color[0];	p[1] = color[1];	p[2] = color[2];	p[3] = color[3];	p[4] = color[4];	break;#endif      }    }    updateModX(x);    updateModY(y);  }}void Splash::drawSpan(int x0, int x1, int y, SplashPattern *pattern,		      SplashCoord alpha, GBool noClip) {  SplashBlendFunc blendFunc;  SplashColor color;  SplashColorPtr p;  SplashColor dest, blend;  Guchar mask, t;  int alpha2, ialpha2;  int i, j, n;  n = x1 - x0 + 1;  if (noClip) {    updateModX(x0);    updateModX(x1);    updateModY(y);  }  if (alpha != 1 || softMask || state->blendFunc) {    blendFunc = state->blendFunc ? state->blendFunc : &blendNormal;    if (softMask) {      alpha2 = ialpha2 = 0; // make gcc happy    } else {      alpha2 = (int)(alpha * 255);      ialpha2 = 255 - alpha2;    }    switch (bitmap->mode) {    case splashModeMono1:      p = &bitmap->data[y * bitmap->rowSize + (x0 >> 3)];      i = 0;      if (pattern->isStatic()) {	pattern->getColor(0, 0, color);	if ((j = x0 & 7)) {	  mask = 0x80 >> j;	  for (; j < 8 && i < n; ++i, ++j) {	    if (noClip || state->clip->test(x0 + i, y)) {	      if (softMask) {		alpha2 = (int)(alpha *			       softMask->data[y * softMask->rowSize + x0 + i]);		ialpha2 = 255 - alpha2;	      }	      dest[0] = (*p >> (7 - j)) & 1;	      (*blendFunc)(color, dest, blend, bitmap->mode);	      t = (alpha2 * blend[0] + ialpha2 * dest[0]) >> 8;	      if (t) {		*p |= mask;	      } else {		*p &= ~mask;	      }	      if (!noClip) {		updateModX(x0 + i);		updateModY(y);	      }	    }	    mask >>= 1;	  }	  ++p;	}	while (i < n) {	  mask = 0x80;	  for (j = 0; j < 8 && i < n; ++i, ++j) {	    if (noClip || state->clip->test(x0 + i, y)) {	      if (softMask) {		alpha2 = (int)(alpha *			       softMask->data[y * softMask->rowSize + x0 + i]);		ialpha2 = 255 - alpha2;	      }	      dest[0] = (*p >> (7 - j)) & 1;	      (*blendFunc)(color, dest, blend, bitmap->mode);	      t = (alpha2 * blend[0] + ialpha2 * dest[0]) >> 8;	      if (t) {		*p |= mask;	      } else {		*p &= ~mask;	      }	      if (!noClip) {		updateModX(x0 + i);		updateModY(y);	      }	    }	    mask >>= 1;	  }	  ++p;	}      } else {	if ((j = x0 & 7)) {	  mask = 0x80 >> j;	  for (; j < 8 && i < n; ++i, ++j) {	    if (noClip || state->clip->test(x0 + i, y)) {	      pattern->getColor(x0 + i, y, color);	      if (softMask) {		alpha2 = (int)(alpha *			       softMask->data[y * softMask->rowSize + x0 + i]);		ialpha2 = 255 - alpha2;	      }	      dest[0] = (*p >> (7 - j)) & 1;	      (*blendFunc)(color, dest, blend, bitmap->mode);	      t = (alpha2 * blend[0] + ialpha2 * dest[0]) >> 8;	      if (t) {		*p |= mask;	      } else {		*p &= ~mask;	      }	      if (!noClip) {		updateModX(x0 + i);		updateModY(y);	      }	    }	    mask >>= 1;	  }	  ++p;	}	while (i < n) {	  mask = 0x80;	  for (j = 0; j < 8 && i < n; ++i, ++j) {	    if (noClip || state->clip->test(x0 + i, y)) {	      pattern->getColor(x0 + i, y, color);	      if (softMask) {		alpha2 = (int)(alpha *			       softMask->data[y * softMask->rowSize + x0 + i]);		ialpha2 = 255 - alpha2;	      }	      dest[0] = (*p >> (7 - j)) & 1;	      (*blendFunc)(color, dest, blend, bitmap->mode);	      t = (alpha2 * blend[0] + ialpha2 * dest[0]) >> 8;	      if (t) {		*p |= mask;	      } else {		*p &= ~mask;	      }	      if (!noClip) {		updateModX(x0 + i);		updateModY(y);	      }	    }	    mask >>= 1;	  }	  ++p;	}      }      break;    case splashModeMono8:      p = &bitmap->data[y * bitmap->rowSize + x0];      if (pattern->isStatic()) {	pattern->getColor(0, 0, color);	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    *p = (alpha2 * blend[0] + ialpha2 * *p) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  ++p;	}      } else {	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    pattern->getColor(x0 + i, y, color);	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    *p = (alpha2 * blend[0] + ialpha2 * *p) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  ++p;	}      }      break;    case splashModeAMono8:      p = &bitmap->data[y * bitmap->rowSize + 2 * x0];      if (pattern->isStatic()) {	pattern->getColor(0, 0, color);	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	    p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  p += 2;	}      } else {	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    pattern->getColor(x0 + i, y, color);	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	    p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  p += 2;	}      }      break;    case splashModeRGB8:    case splashModeBGR8:      p = &bitmap->data[y * bitmap->rowSize + 3 * x0];      if (pattern->isStatic()) {	pattern->getColor(0, 0, color);	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	    p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	    p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  p += 3;	}      } else {	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    pattern->getColor(x0 + i, y, color);	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	    p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	    p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	    if (!noClip) {	      updateModX(x0 + i);	      updateModY(y);	    }	  }	  p += 3;	}      }      break;    case splashModeARGB8:    case splashModeBGRA8:#if SPLASH_CMYK    case splashModeCMYK8:#endif      p = &bitmap->data[y * bitmap->rowSize + 4 * x0];      if (pattern->isStatic()) {	pattern->getColor(0, 0, color);	for (i = 0; i < n; ++i) {	  if (noClip || state->clip->test(x0 + i, y)) {	    if (softMask) {	      alpha2 = (int)(alpha *			     softMask->data[y * softMask->rowSize + x0 + i]);	      ialpha2 = 255 - alpha2;	    }	    (*blendFunc)(color, p, blend, bitmap->mode);	    p[0] = (alpha2 * blend[0] + ialpha2 * p[0]) >> 8;	    p[1] = (alpha2 * blend[1] + ialpha2 * p[1]) >> 8;	    p[2] = (alpha2 * blend[2] + ialpha2 * p[2]) >> 8;	    p[3] = (alpha2 * blend[3] + ialpha2 * p[3]) >> 8;	    if (!noClip) {	      updateModX(x0 + i);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -