1+ /*
2+ * Copyright (c) 2026 ThorVG project. All rights reserved.
3+
4+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5+ * of this software and associated documentation files (the "Software"), to deal
6+ * in the Software without restriction, including without limitation the rights
7+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+ * copies of the Software, and to permit persons to whom the Software is
9+ * furnished to do so, subject to the following conditions:
10+
11+ * The above copyright notice and this permission notice shall be included in all
12+ * copies or substantial portions of the Software.
13+
14+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+ * SOFTWARE.
21+ */
22+
23+ #include " Example.h"
24+
25+ /* ***********************************************************************/
26+ /* ThorVG Drawing Contents */
27+ /* ***********************************************************************/
28+
29+ static constexpr int CANVAS_SIZE = 1650 ;
30+ static constexpr int PIC_COUNT = 500 ;
31+
32+ struct UserExample : tvgexam::Example
33+ {
34+ bool content (tvg::Canvas* canvas, uint32_t w, uint32_t h) override
35+ {
36+ for (int i = 0 ; i < PIC_COUNT; ++i) {
37+ auto p = tvg::Picture::gen ();
38+ p->load (EXAMPLE_DIR" /image/test.png" );
39+ p->origin (0 .5f , 0 .5f );
40+ p->translate (rand () % CANVAS_SIZE, rand () % CANVAS_SIZE);
41+ p->scale (float (10 + rand () % 90 ) * 0 .005f );
42+ p->rotate (float (rand () % 360 ));
43+ canvas->add (p);
44+ }
45+ return true ;
46+ }
47+
48+ bool update (tvg::Canvas* canvas, uint32_t elapsed) override
49+ {
50+ for (auto i : canvas->paints ()) {
51+ auto p = static_cast <tvg::Picture*>(i);
52+ p->translate (rand () % 1650 , rand () % 1650 );
53+ p->scale (float (10 + rand () % 90 ) * 0 .005f );
54+ p->rotate (float (rand () % 360 ));
55+ }
56+ return canvas->update () == tvg::Result (0 );
57+ }
58+ };
59+
60+ /* ***********************************************************************/
61+ /* Entry Point */
62+ /* ***********************************************************************/
63+
64+ int main (int argc, char **argv)
65+ {
66+ return tvgexam::main (new UserExample, argc, argv, true , CANVAS_SIZE, CANVAS_SIZE, 4 , true );
67+ }
0 commit comments