Example #1
0
void updateTitle(bool &bTitleActive, bool &bgamerunning, bool &bpongrunning)
{
	testOnTitleScreen(titleball);
	updateTitleBallPosition(titleball);
	cursormove(cursor, bTitleActive, bgamerunning, bpongrunning);
	// titlepaddle matches ball.pos.y
	
	titlepaddle.position.y = titleball.position.y;
	titlewall.position.y = titleball.position.y;

	MoveSprite(titlepaddle.sprite, titlepaddle.position.x, titlepaddle.position.y);
	MoveSprite(titlewall.sprite, titlewall.position.x, titlewall.position.y);
	MoveSprite(titleball.sprite, titleball.position.x, titleball.position.y);
	MoveSprite(cursor.sprite, cursor.position.x, cursor.position.y);
}
Example #2
0
File: cam.c Project: saitoha/cam
static int deal(FILE *fp, char *filename, int pipemode)
{
  color *image;
  void (*outputcolor)();
  int width, height, comp, i, j, istep, jstep, ch, scale, scalew, scaleh,
      offset, imagewidth, imageheight,
      margintopbottom, marginleftright, marginleft, margintop,
      paddingtopbottom, paddingleftright, paddingleft, paddingright,
      paddingtop, paddingbottom,
      ipaddingleftright, ipaddingleft, ipaddingright;

  image = stbi_load_from_file(fp, &width, &height, &comp, 0);

  /* error handling */
  if (image == NULL) {
    if ((!qflag) && (stbi_failure_reason() != NULL))
      warnx("%s: %s", filename, stbi_failure_reason());
    goto ERR_DEAL;
  }
  if (width <= 0 || height <= 0) {
    if (!qflag)
      warnx("%s %s (width: %d, height: %d)", filename,
          "is an invalid image", width, height);
    goto ERR_DEAL;
  }
  /* ok, it is surely a valid image */

  /* get terminal size before processing each image */
  terminalsize();

  /* set scale parameters */
  scale = 1;
  if (Sflag) {
    if (cflag) outputcolor = outputcolor_3;
    else       outputcolor = outputcolor_1;
    scale = (int)Sval; /* TODO */
    istep = 2 * (jstep = scale);
    imageheight = (int)ceil((double)height / (double)istep);
    imagewidth = (int)ceil((double)width / (double)jstep);
  } else if (2 * width <= outputwidth && height <= outputheight) {
    if (cflag) outputcolor = outputcolor_4;
    else       outputcolor = outputcolor_2;
    istep = jstep = 1;
    imagewidth = width * 2;
    imageheight = height;
  } else {
    if (cflag) outputcolor = outputcolor_3;
    else       outputcolor = outputcolor_1;
    scalew = (int)ceil((double)width / (double)outputwidth);
    scaleh = (int)ceil((double)height / 2.0 / (double)outputheight);
    if (Hval == 0 && hval == 0 && (wval > 0 || Wval > 0))      scale = scalew;
    else if ((hval > 0 || Hval > 0) && wval == 0 && Wval == 0) scale = scaleh;
    else                             scale = ((scalew) > (scaleh) ? (scalew) : (scaleh));
    istep = 2 * (jstep = scale);
    imageheight = (int)ceil((double)height / (double)istep);
    imagewidth = (int)ceil((double)width / (double)jstep);
  }
  if (istep * jstep >= INT_MAX / 256 || width * height >= INT_MAX / 3) {
    if (!qflag)
      warnx("%s %s (width: %d, height: %d)",
          filename, "is too large", width, height);
    goto ERR_DEAL;
  }

  /* setting parameters */
  margintopbottom = terminalheight - outputheight - iflag;
  marginleftright = terminalwidth - outputwidth;
  paddingtopbottom = outputheight - imageheight;
  paddingleftright = outputwidth - imagewidth;

  if (Rflag && !Lflag) {
    marginleft = marginleftright;
  } else if (Lflag && !Rflag) {
    marginleft = 0;
  } else if ((Lflag && Rflag) || Cflag || Tflag || Bflag) {
    marginleft = marginleftright / 2;
  } else {
    marginleft = 0;
  }

  if (PRflag && !PLflag) {
    paddingleft = paddingleftright;
  } else if (PLflag && !PRflag) {
    paddingleft = 0;
  } else if ((PLflag && PRflag) || PCflag || PTflag || PBflag) {
    paddingleft = paddingleftright / 2;
  } else if (Rflag && !Lflag) {
    paddingleft = paddingleftright;
  } else if (Lflag && !Rflag) {
    paddingleft = 0;
  } else if ((Lflag && Rflag) || Cflag || Tflag || Bflag) {
    paddingleft = paddingleftright / 2;
  } else {
    paddingleft = 0;
  }

  if (Bflag) {
    margintop = margintopbottom;
  } else if (Tflag) {
    margintop = 0;
  } else if (Cflag) {
    margintop = margintopbottom / 2;
  } else {
    margintop = 0;
  }

  if (PBflag) {
    paddingtop = paddingtopbottom;
  } else if (PTflag) {
    paddingtop = 0;
  } else if (PCflag) {
    paddingtop = paddingtopbottom / 2;
  } else if (Bflag) {
    paddingtop = paddingtopbottom;
  } else if (Tflag) {
    paddingtop = 0;
  } else if (Cflag) {
    paddingtop = paddingtopbottom / 2;
  } else {
    paddingtop = 0;
  }

  paddingright = paddingleftright - paddingleft;
  paddingbottom = paddingtopbottom - paddingtop;

  /* start up */
  setdefaultcolor();
  if (uflag) {
    cursorhide();
    cursorsave();
  }

  /* main process */
  if (Eflag && filecount == 0) erasescreen();
  if (Cflag || Tflag || Bflag) {
    if (!eflag) {
      if (margintop >= 0) cursormove(margintop + 1, 1);
      for (i = 0; i < paddingtop; i++) {
        if (marginleft > 0) cursorforward(marginleft);
        replicatespace(outputwidth);
        cursordown_cursorhorizontalabsolute();
      }
    }
    if (margintop + paddingtop >= 0) cursormove(margintop + paddingtop + 1, 1);
  }
  if (iflag) {
    ipaddingleftright = outputwidth - strlen(filename);
    if (PRflag && !PLflag) {
      ipaddingleft = ipaddingleftright;
    } else if (PLflag && !PRflag) {
      ipaddingleft = 0;
    } else if ((PLflag && PRflag) || PCflag || PTflag || PBflag) {
      ipaddingleft = ipaddingleftright / 2;
    } else if (Rflag && !Lflag) {
      ipaddingleft = ipaddingleftright;
    } else if (Lflag && !Rflag) {
      ipaddingleft = 0;
    } else if ((Lflag && Rflag) || Cflag || Tflag || Bflag) {
      ipaddingleft = ipaddingleftright / 2;
    } else {
      ipaddingleft = 0;
    }
    ipaddingright = ipaddingleftright - ipaddingleft;
    if (Cflag || Lflag || Rflag || Tflag || Bflag ||
        PCflag || PLflag || PRflag || PTflag || PBflag) {
      if (marginleft > 0) cursorforward(marginleft);
      if (ipaddingleft > 0) {
        if (eflag) {
          cursorforward(ipaddingleft);
        } else {
          replicatespace(ipaddingleft);
        }
      } else if (ipaddingleftright < 0) {
        filename[outputwidth] = '\0';
      }
    }
    printf("%s", filename);
    if (Cflag || Tflag || Bflag || PCflag || PTflag || PBflag) {
      if (ipaddingright > 0) {
        if (!eflag) {
          replicatespace(ipaddingright);
        }
      }
      if (Cflag || Tflag || Bflag) {
        cursordown_cursorhorizontalabsolute();
      } else {
        newline();
      }
    } else {
      newline();
    }
  }
  for (i = 0; i < height; i += istep) {
    if (Cflag || Lflag || Rflag || Tflag || Bflag ||
        PCflag || PLflag || PRflag || PTflag || PBflag) {
      if (marginleft > 0) cursorforward(marginleft);
      if (paddingleft > 0) {
        if (eflag) {
          cursorforward(paddingleft);
        } else {
          replicatespace(paddingleft);
        }
      }
    }
    for (j = 0; j < width; j += jstep) {
      offset = (i * width + j) * comp;
      outputcolor(image, height, width, offset, i, j,
          (i + istep > height ? height - i : istep),
          (j + jstep > width ? width - j : jstep), comp);
    }
    setdefaultcolor();
    if (Cflag || Tflag || Bflag || PCflag || PTflag || PBflag) {
      if (paddingright > 0) {
        if (!eflag) {
          replicatespace(paddingright);
        }
      }
      if (Cflag || Tflag || Bflag) {
        cursordown_cursorhorizontalabsolute();
      } else {
        newline();
      }
    } else {
      newline();
    }
  }
  if (Cflag || Tflag) {
    if (!eflag) {
      for (i = 0; i < paddingbottom; i++) {
        if (marginleft > 0) cursorforward(marginleft);
        if (outputwidth > 0) replicatespace(outputwidth);
        cursordown_cursorhorizontalabsolute();
      }
    }
  }

  /* clean up */
  setdefaultcolor();
  if (uflag) {
    cursorunsave();
    cursorshow();
  }
  fflush(stdout);
  stbi_image_free(image);
  ++filecount;

  /* debug mode */
  if (dflag) {
    cursorsave();
    cursormove(1, 1);
    printf(PACKAGE);
    if (iflag) printf(" -i");
    if (qflag) printf(" -q");
    if (sflag) printf(" -s %lf", sval);
    if (rflag) printf(" -r %ld", rval);
    if (Lflag) printf(" -L");
    if (Rflag) printf(" -R");
    if (Cflag) printf(" -C");
    if (Tflag) printf(" -T");
    if (Bflag) printf(" -B");
    if (Eflag) printf(" -E");
    if (hflag) printf(" -h %ld", hval);
    if (Hflag) printf(" -H %ld", Hval);
    if (wflag) printf(" -w %ld", wval);
    if (Wflag) printf(" -W %ld", Wval);
    printf(" %s\n", filename);
    printf("terminalwidth: %d\n", terminalwidth);
    printf("terminalheight: %d\n", terminalheight);
    printf("outputwidth: %d\n", outputwidth);
    printf("outputheight: %d\n", outputheight);
    printf("imagewidth: %d\n", imagewidth);
    printf("imageheight: %d\n", imageheight);
    printf("margintop: %d\n", margintop);
    printf("marginleft: %d\n", marginleft);
    printf("paddingtop: %d\n", paddingtop);
    printf("paddingleft: %d\n", paddingleft);
    printf("paddingbottom: %d\n", paddingbottom);
    printf("paddingright: %d\n", paddingright);
    fflush(stdout);
    cursorunsave();
  }

  /* check next file if pipe or fifo */
  if (pipemode) {
    ch = getc(fp);
    if (ch != EOF) {
      if (ch != '\0' && ch != '\n') {
        ungetc(ch, fp);
      } else if ((ch = getc(fp)) != '\0' && ch != '\n') {
        ungetc(ch, fp);
      } else if ((ch = getc(fp)) != '\0' && ch != '\n') {
        ungetc(ch, fp);
      }
      if (ch != EOF) {
        if (sflag && sval > 0) {
          usleep(sval * 1e6);
        }
        deal(fp, filename, pipemode);
      }
    }
  }

  return 0;

ERR_DEAL:
  return 1;
}