Пример #1
0
static void Init() {
  float lightRadius = 1.0f;
  int i;

  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256);
  UVMapGenerateTunnel(uvmap, 32.0f, 3, 4.0 / 3.0, 0.5, 0.5, NULL);
  UVMapSetTexture(uvmap, texture);

  flare = NewPixBuf(PIXBUF_GRAY, 64, 64);
  GeneratePixels(flare, (GenPixelFuncT)LightLinearFalloff, &lightRadius);
  for (i = 0; i < flare->width * flare->height; i++)
    flare->data[i] /= 4;

  origU = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufBlit(origU, 0, 0,
             NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.u), NULL);

  origV = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufBlit(origV, 0, 0,
             NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.v), NULL);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(texturePal);
}
Пример #2
0
/*
 * Set up resources.
 */
void AddInitialResources() {
  ResAddPngImage("Texture", "TexturePal", "data/texture-shades.png");
  ResAddPngImage("ColorMap", NULL, "data/texture-shades-map.png");
  ResAdd("Map", NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256));
  ResAdd("Shades", NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT));
  ResAdd("Canvas", NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT));
  ResAdd("ColFunc", NewColorFunc());
}
Пример #3
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_NORMAL, 256, 256);
  UVMapSetTexture(uvmap, texture);

  shades = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  smallMap = NewUVMap(H_RAYS, V_RAYS, UV_ACCURATE, 256, 256);
  lightFunc = CalculateLightFunc();

  LoadPalette(texturePal);
  InitDisplay(WIDTH, HEIGHT, DEPTH);
}
Пример #4
0
/*
 * Set up resources.
 */
void AddInitialResources() {
  ResAdd("Canvas", NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT));
  ResAdd("Scene", NewScene());
#if 0
  ResAdd("Mesh", NewMeshFromFile("data/shattered_ball.robj"));
  ResAdd("ColorMap", NewPixBufFromFile("data/shattered_ball_cmap.8"));
  ResAddPngImage("ColorMap", "Palette", "data/wecan_logo_cmap.png");
  ResAdd("Palette", NewPaletteFromFile("data/shattered_ball_cmap.pal"));
#else
  ResAdd("Mesh", NewMeshFromFile("data/wecan_logo.robj"));
#endif

  {
    MeshT *mesh = R_("Mesh");

    CalculateSurfaceNormals(mesh);
    NormalizeMeshSize(mesh);
    MeshApplyPalette(mesh, R_("Palette"));
  }

  SceneAddObject(R_("Scene"), NewSceneObject("Object", R_("Mesh")));

  RenderMode = RENDER_GOURAUD_SHADING;
  RenderAllFaces = false;
}
Пример #5
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);

  shades = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufSetColorMap(shades, colorMap);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256);
  uvmap->lightMap = shades;
  UVMapGenerate4(uvmap);
  UVMapSetTexture(uvmap, texture);

  component = NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.u);
  colorFunc = NewTable(uint8_t, 256);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(texturePal);
}
Пример #6
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  PixBufClear(canvas);

  ms = NewMatrixStack2D();

  InitDisplay(WIDTH, HEIGHT, DEPTH);
}
Пример #7
0
static void Init() {
  uvmap = NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256);
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);

  ChangeMap(0);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(texturePal);
}
Пример #8
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);

  uvmap = NewUVMap(WIDTH, HEIGHT, UV_FAST, 256, 256);
  UVMapGenerate2(uvmap);
  UVMapSetTexture(uvmap, texture);

  orig = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  PixBufBlit(orig, 0, 0,
             NewPixBufWrapper(WIDTH, HEIGHT, uvmap->map.fast.u), NULL);

  scene = NewScene();
  SceneAddObject(scene, NewSceneObject("Object", mesh));

  shades = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(texturePal);
}
Пример #9
0
void LoadPng(const char *path) {
  PngT *png = PngLoadFromFile(path);

  if (png) {
    PixBufT *pixbuf;
    int16_t type;

    puts("IHDR:");
    printf("  width      : %d\n", png->ihdr.width);
    printf("  height     : %d\n", png->ihdr.height);
    printf("  bit depth  : %d\n", png->ihdr.bit_depth);
    printf("  color type : ");

    if (png->ihdr.colour_type == PNG_GRAYSCALE) {
      type = PIXBUF_GRAY;
      puts("gray scale");
    } else if (png->ihdr.colour_type == PNG_TRUECOLOR) {
      type = PIXBUF_RGB;
      puts("true color");
    } else if (png->ihdr.colour_type == PNG_INDEXED) {
      type = PIXBUF_CLUT;
      puts("indexed color");
    } else if (png->ihdr.colour_type == PNG_GRAYSCALE_ALPHA) {
      type = PIXBUF_GRAY;
      puts("gray scale (with alpha)");
    } else {
      type = PIXBUF_RGBA;
      puts("true color (with alpha)");
    }

    printf("  interlace  : %s\n", png->ihdr.interlace_method ? "yes" : "no");

    if (png->plte.no_colors) {
      puts("PLTE:");
      printf("  colors     : %d\n", png->plte.no_colors);
    }

    if (png->trns) {
      puts("tRNS:");
      if (png->ihdr.colour_type == PNG_INDEXED)
        printf("  color : %d\n", png->trns->type3.alpha[0]);
    }

    pixbuf = NewPixBuf(type, png->ihdr.width, png->ihdr.height);
    PngDecodeImage(png, pixbuf);
    MemUnref(pixbuf);
  }

  puts("");
  MemUnref(png);
}
Пример #10
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  map[0] = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  map[1] = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);
  shade = NewPixBuf(PIXBUF_GRAY, WIDTH, HEIGHT);

  {
    FLineT line;
    FPointT pa = { 0, 0 };
    FPointT pb = { WIDTH, HEIGHT };

    FLineInitFromPoints(&line, &pa, &pb);
    LinearGradient(map[0], &line);
  }

  {
    FPointT center = { WIDTH / 2, HEIGHT / 2 };
    CircularGradient(map[1], &center);
  }

  InitDisplay(WIDTH, HEIGHT, DEPTH);
  LoadPalette(imagePal);
}
Пример #11
0
static PixBufT *PngToPixBuf(PngT *png) {
  PixBufT *pixbuf = NULL;

  if (png->ihdr.bit_depth == 8) {
    int16_t type;

    switch (png->ihdr.colour_type) {
      case PNG_GRAYSCALE:
        type = PIXBUF_GRAY;
        break;

      case PNG_INDEXED:
        type = PIXBUF_CLUT;
        break;

      default:
        type = -1;
        break;
    }

    if (type >= 0) {
      pixbuf = NewPixBuf(type, png->ihdr.width, png->ihdr.height);

      if (!PngDecodeImage(png, pixbuf)) {
        MemUnref(pixbuf);
        pixbuf = NULL;
      } else {
        PixBufCalculateHistogram(pixbuf);

        LOG("The image has %d (%d..%d) colors.",
            (int)pixbuf->lastColor - (int)pixbuf->baseColor + 1,
            pixbuf->baseColor, pixbuf->lastColor);

        if (png->trns) {
          pixbuf->mode = BLIT_TRANSPARENT;
          pixbuf->baseColor = png->trns->type3.alpha[0];

          LOG("The image is transparent (color = %d).", pixbuf->baseColor);
        }
      }
    }
  }

  return pixbuf;
}
Пример #12
0
/*
 * Load demo.
 */
bool LoadDemo() {
  const char *loadImgPath = JsonQueryString(DemoConfig, "load/image");
  const char *loadPalPath = JsonQueryString(DemoConfig, "load/palette");
  const char *musicPath = JsonQueryString(DemoConfig, "music/file");

  if ((TheLoadImg = NewPixBufFromFile(loadImgPath)) &&
      (TheLoadPal = NewPaletteFromFile(loadPalPath)) &&
      (TheMusic = AudioStreamOpen(musicPath)) &&
      (TheCanvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT)) &&
      InitDisplay(WIDTH, HEIGHT, DEPTH))
  {
    c2p1x1_8_c5_bm(TheLoadImg->data, GetCurrentBitMap(), WIDTH, HEIGHT, 0, 0);
    LoadPalette(TheLoadPal);
    DisplaySwap();

    return true;
  }

  return false;
}
Пример #13
0
static void Init() {
  canvas = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);
  buffer = NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT);

  InitDisplay(WIDTH, HEIGHT, DEPTH);
}
Пример #14
0
/*
 * Set up resources.
 */
void AddInitialResources() {
  ResAdd("Canvas", NewPixBuf(PIXBUF_CLUT, WIDTH, HEIGHT + 2));
  ResAdd("Palette", NewPalette(256));
}