Files
TeslaRel410/BORLAND/BC45/SOURCE/OWL/CELARRAY.CPP
T
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00

90 lines
2.3 KiB
C++

//----------------------------------------------------------------------------
// ObjectWindows
// (C) Copyright 1993, 1994 by Borland International, All Rights Reserved
//
// Implementation of a bitmap Cel array class.
//----------------------------------------------------------------------------
#include <owl/owlpch.h>
#include <owl/celarray.h>
//
// Construct a TCelArray from a bitmap, slicing a portion of the bitmap up
// into a horizontal array of specified sized cels.
// The CelArray can own (& delete) the bitmap or not, determined by autoDelete
//
TCelArray::TCelArray(TBitmap* bmp, int numCels, TSize celSize,
TPoint offset, TAutoDelete autoDelete)
{
PRECONDITION(bmp);
Bitmap = bmp;
ShouldDelete = ToBool(autoDelete == AutoDelete);
NCels = numCels < 1 ? 1 : numCels;
CSize = celSize.cx && celSize.cy ?
celSize :
TSize(bmp->Width() / NCels, bmp->Height());
Offs = offset;
}
//
// Construct a TCelArray from a dib, slicing the dib up into a horizontal
// array of even sized cels
//
TCelArray::TCelArray(TDib& dib, int numCels)
{
Bitmap = new TBitmap(dib, &TPalette((HPALETTE)::GetStockObject(DEFAULT_PALETTE)));
ShouldDelete = true;
NCels = numCels < 1 ? 1 : numCels;
CSize = TSize(dib.Width() / NCels, dib.Height());
Offs = 0;
}
//
// Construct a TCelArray as a copy of an existing one. Copy Bitmap iff
// original owned its Bitmap, else just keep a ref to it also.
//
TCelArray::TCelArray(const TCelArray& src)
{
ShouldDelete = src.ShouldDelete;
Bitmap = ShouldDelete ? new TBitmap(*src.Bitmap) : src.Bitmap;
NCels = src.NCels;
CSize = src.CSize;
Offs = src.Offs;
}
TCelArray::~TCelArray()
{
if (ShouldDelete)
delete Bitmap;
}
TCelArray&
TCelArray::operator =(const TCelArray& src)
{
if (ShouldDelete)
delete Bitmap;
ShouldDelete = src.ShouldDelete;
Bitmap = ShouldDelete ? new TBitmap(*src.Bitmap) : src.Bitmap;
NCels = src.NCels;
CSize = src.CSize;
Offs = src.Offs;
return *this;
}
TPoint
TCelArray::CelOffset(int cel) const
{
return TPoint(Offs.x+cel*CSize.cx, Offs.y);
}
TRect
TCelArray::CelRect(int cel) const
{
return TRect(TPoint(Offs.x+cel*CSize.cx, Offs.y), CSize);
}