MCPcopy Create free account
hub / github.com/KebsCS/KBotExt / stbrp_pack_rects

Function stbrp_pack_rects

KBotExt/imgui/imstb_rectpack.h:545–585  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

543}
544
545STBRP_DEF int stbrp_pack_rects(stbrp_context* context, stbrp_rect* rects, int num_rects)
546{
547 int i, all_rects_packed = 1;
548
549 // we use the 'was_packed' field internally to allow sorting/unsorting
550 for (i = 0; i < num_rects; ++i) {
551 rects[i].was_packed = i;
552 }
553
554 // sort according to heuristic
555 STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
556
557 for (i = 0; i < num_rects; ++i) {
558 if (rects[i].w == 0 || rects[i].h == 0) {
559 rects[i].x = rects[i].y = 0; // empty rect needs no space
560 }
561 else {
562 stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
563 if (fr.prev_link) {
564 rects[i].x = (stbrp_coord)fr.x;
565 rects[i].y = (stbrp_coord)fr.y;
566 }
567 else {
568 rects[i].x = rects[i].y = STBRP__MAXVAL;
569 }
570 }
571 }
572
573 // unsort
574 STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
575
576 // set was_packed flags and all_rects_packed status
577 for (i = 0; i < num_rects; ++i) {
578 rects[i].was_packed = !(rects[i].x == STBRP__MAXVAL && rects[i].y == STBRP__MAXVAL);
579 if (!rects[i].was_packed)
580 all_rects_packed = 0;
581 }
582
583 // return the all_rects_packed status
584 return all_rects_packed;
585}
586#endif
587
588/*

Calls 1

Tested by

no test coverage detected