int NzGuillotineBinPack::ScoreByHeuristic(int width, int height, const NzRectui& freeRect, FreeRectChoiceHeuristic rectChoice) { switch (rectChoice) { case RectBestAreaFit: return ScoreBestAreaFit(width, height, freeRect); case RectBestLongSideFit: return ScoreBestLongSideFit(width, height, freeRect); case RectBestShortSideFit: return ScoreBestShortSideFit(width, height, freeRect); case RectWorstAreaFit: return ScoreWorstAreaFit(width, height, freeRect); case RectWorstLongSideFit: return ScoreWorstLongSideFit(width, height, freeRect); case RectWorstShortSideFit: return ScoreWorstShortSideFit(width, height, freeRect); } NazaraError("Rect choice heuristic out of enum (0x" + NzString::Number(rectChoice, 16) + ')'); return std::numeric_limits<int>::max(); }
/// Returns the heuristic score value for placing a rectangle of size width*height longo freeRect. Does not try to rotate. long GuillotineBinPack::ScoreByHeuristic(long width, long height, const Rect &freeRect, FreeRectChoiceHeuristic rectChoice) { switch(rectChoice) { case RectBestAreaFit: return ScoreBestAreaFit(width, height, freeRect); case RectBestShortSideFit: return ScoreBestShortSideFit(width, height, freeRect); case RectBestLongSideFit: return ScoreBestLongSideFit(width, height, freeRect); case RectWorstAreaFit: return ScoreWorstAreaFit(width, height, freeRect); case RectWorstShortSideFit: return ScoreWorstShortSideFit(width, height, freeRect); case RectWorstLongSideFit: return ScoreWorstLongSideFit(width, height, freeRect); default: assert(false); return std::numeric_limits<long>::max(); } }