~ruther/CTU-FEE-B0B35APO-Semestral-project

d2ba791f0db9f75f7984b67d64afeb8bb0e98748 — František Boháček 3 years ago 410ece0
feat: add image write to display
1 files changed, 15 insertions(+), 5 deletions(-)

M image-viewer/src/image.c
M image-viewer/src/image.c => image-viewer/src/image.c +15 -5
@@ 81,7 81,6 @@ double get_scale_factor(uint16_t w, uint16_t h, image_region_t display_region) {
  return scale;
}

bool image_write_to_display(image_t *image, display_t *display,
static void image_write_downscale(image_t *image, display_t *display,
                                  image_region_t region, double scale_factor) {
  float downscale_factor = 1 / scale_factor;


@@ 125,6 124,7 @@ static void image_write_downscale(image_t *image, display_t *display,
    }
  }
}

static void image_write_upscale(image_t *image, display_t *display,
                                image_region_t region, double scale_factor) {
  float downscale_factor = 1 / scale_factor;


@@ 153,15 153,25 @@ static void image_write_direct(image_t *image, display_t *display,
    }
  }
}

double image_write_to_display(image_t *image, display_t *display,
                            image_region_t region) {
  uint16_t w = region.width, h = region.height;
  uint16_t x = region.x, y = region.y;
  if (w == DISPLAY_WIDTH && h == DISPLAY_HEIGHT) {
    // write directly to image
    image_write_direct(image, display, region);
    return 1;
  }

  image_region_t display_region = image_region_create(0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT);
  double scale = get_scale_factor(w, h, display_region);

  uint16_t sw = (uint16_t)(scale * w), sh = (uint16_t)(scale * h);

  // scaling
  return true;
  if (scale < 1) {
    image_write_downscale(image, display, region, scale);
  } else {
    image_write_upscale(image, display, region, scale);
  }

  return scale;
}

Do not follow this link