Skip to content

Commit

Permalink
Merge pull request #845 from pbdot/ec-issue-844
Browse files Browse the repository at this point in the history
Add support for image special repeat and use it for overlays
  • Loading branch information
pbdot authored Jan 16, 2025
2 parents cd9e3d9 + 207d0f8 commit 7b8bf73
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 23 deletions.
6 changes: 6 additions & 0 deletions edge_defs/scripts/images.ddf
Original file line number Diff line number Diff line change
Expand Up @@ -9,21 +9,27 @@

[GFX:OVERLAY_LINES_1X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_lines_1x.png";
SPECIAL=FORCE_REPEAT;

[GFX:OVERLAY_LINES_2X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_lines_2x.png";
SPECIAL=FORCE_REPEAT;

[GFX:OVERLAY_VERTICAL_1X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_vertical_1x.png";
SPECIAL=FORCE_REPEAT;

[GFX:OVERLAY_VERTICAL_2X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_vertical_2x.png";
SPECIAL=FORCE_REPEAT;

[GFX:OVERLAY_GRILL_1X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_grill_1x.png";
SPECIAL=FORCE_REPEAT;

[GFX:OVERLAY_GRILL_2X]
IMAGE_DATA=PACK:"graphics/overlays/overlay_grill_2x.png";
SPECIAL=FORCE_REPEAT;

[gfx:MESSGBOX]
IMAGE_DATA=COLOUR:#000000;
Expand Down
17 changes: 11 additions & 6 deletions source_files/ddf/ddf_image.cc
Original file line number Diff line number Diff line change
Expand Up @@ -298,12 +298,17 @@ static void DDFImageGetType(const char *info, void *storage)
DDFError("Unknown image type: %s\n", keyword);
}

static DDFSpecialFlags image_specials[] = {
{"NOALPHA", kImageSpecialNoAlpha, 0}, {"FORCE_MIP", kImageSpecialMip, 0},
{"FORCE_NOMIP", kImageSpecialNoMip, 0}, {"FORCE_CLAMP", kImageSpecialClamp, 0},
{"FORCE_SMOOTH", kImageSpecialSmooth, 0}, {"FORCE_NOSMOOTH", kImageSpecialNoSmooth, 0},
{"CROSSHAIR", kImageSpecialCrosshair, 0}, {"GRAYSCALE", kImageSpecialGrayscale, 0},
{"FORCE_PRECACHE", kImageSpecialPrecache, 0}, {nullptr, 0, 0}};
static DDFSpecialFlags image_specials[] = {{"NOALPHA", kImageSpecialNoAlpha, 0},
{"FORCE_MIP", kImageSpecialMip, 0},
{"FORCE_NOMIP", kImageSpecialNoMip, 0},
{"FORCE_CLAMP", kImageSpecialClamp, 0},
{"FORCE_REPEAT", kImageSpecialRepeat, 0},
{"FORCE_SMOOTH", kImageSpecialSmooth, 0},
{"FORCE_NOSMOOTH", kImageSpecialNoSmooth, 0},
{"CROSSHAIR", kImageSpecialCrosshair, 0},
{"GRAYSCALE", kImageSpecialGrayscale, 0},
{"FORCE_PRECACHE", kImageSpecialPrecache, 0},
{nullptr, 0, 0}};

static void DDFImageGetSpecial(const char *info, void *storage)
{
Expand Down
21 changes: 11 additions & 10 deletions source_files/ddf/ddf_image.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,19 @@ enum ImageDataType
kImageDataPackage // load from an EPK package
};

enum ImageSpecial
enum ImageSpecial : uint32_t
{
kImageSpecialNone = 0,
kImageSpecialNoAlpha = 0x0001, // image does not require an alpha channel
kImageSpecialMip = 0x0002, // force mip-mapping
kImageSpecialNoMip = 0x0004, // disable mip-mapping
kImageSpecialClamp = 0x0008, // clamp image
kImageSpecialSmooth = 0x0010, // force smoothing
kImageSpecialNoSmooth = 0x0020, // disable smoothing
kImageSpecialCrosshair = 0x0040, // weapon crosshair (center vertically)
kImageSpecialGrayscale = 0x0080, // forces image to be grayscaled upon creation
kImageSpecialPrecache = 0x0100, // forces image to be precached upon creation
kImageSpecialNoAlpha = 1 << 0, // image does not require an alpha channel
kImageSpecialMip = 1 << 1, // force mip-mapping
kImageSpecialNoMip = 1 << 2, // disable mip-mapping
kImageSpecialClamp = 1 << 3, // clamp image
kImageSpecialRepeat = 1 << 4, // repeat image
kImageSpecialSmooth = 1 << 5, // force smoothing
kImageSpecialNoSmooth = 1 << 6, // disable smoothing
kImageSpecialCrosshair = 1 << 7, // weapon crosshair (center vertically)
kImageSpecialGrayscale = 1 << 8, // forces image to be grayscaled upon creation
kImageSpecialPrecache = 1 << 9, // forces image to be precached upon creation
};

enum ImageTransparencyFix
Expand Down
5 changes: 0 additions & 5 deletions source_files/edge/hu_draw.cc
Original file line number Diff line number Diff line change
Expand Up @@ -466,11 +466,6 @@ void HUDRawImage(float hx1, float hy1, float hx2, float hy2, const Image *image,
HUDCalcScrollTexCoords(sx, sy, &tx1, &ty1, &tx2, &ty2);
}

if (epi::StringCaseCompareASCII(image->name_, hud_overlays.at(video_overlay.d_)) == 0)
{
blend = (BlendingMode)(blend | kBlendingRepeatX | kBlendingRepeatY);
}

bool hud_swirl = false;

if (image->liquid_type_ > kLiquidImageNone && swirling_flats > kLiquidSwirlSmmu)
Expand Down
5 changes: 3 additions & 2 deletions source_files/edge/r_image.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1155,8 +1155,9 @@ static bool IM_ShouldClamp(const Image *rim)
{
case kImageNamespaceGraphic:
case kImageNamespaceSprite:
return true;

if (!(rim->source_.user.def->special_ & kImageSpecialRepeat))
return true;
return false;
default:
return false;
}
Expand Down

0 comments on commit 7b8bf73

Please sign in to comment.