αž“αŸ…αžαŸ’αž„αŸƒαž‘αžΈ 11 αžαŸ‚αž˜αžΈαž“αžΆ αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαŸαž’αŸ†αžŠαŸ†αž”αžΌαž„αž“αŸƒ 1.0.0 αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž€αŸ’αžšαžΆαž αŸ’αžœαž·αž€αžœαŸ‰αž·αž…αž‘αŸαžš XNUMXD αž”αžΆαž“αž€αžΎαžαž‘αžΎαž„ αž•αŸ’αž›αžΆαžαžΌαžœαžΈαž‡αžΈαžŸαžšαžŸαŸαžšαž‡αžΆ C αž“αž·αž„αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αžšαŸ„αž˜αž’αžΆαž‡αŸ’αž‰αžΆαž”αŸαžŽαŸ’αžŽ MIT αŸ” αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž–αžΉαž„αž–αžΆαž€αŸ‹αž—αžΆαž‚αžΈαž‘αžΈαž”αžΈαž‘αŸαŸ”

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ–

  • αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜αž‚αŸ†αž“αžΌαžšαž”αž“αŸ’αž‘αžΆαžαŸ‹;
  • αžŸαŸ’αžšαž˜αŸ„αž›αžšαžΉαž„, αž‡αž˜αŸ’αžšαžΆαž›αž“αž·αž„αžœαžΆαž™αž“αž—αžΆαž–;
  • αž–αž»αž˜αŸ’αž–αž’αž€αŸ’αžŸαžšαž“αž·αž„αž’αžαŸ’αžαž”αž‘;
  • αž€αžΆαžšαž€αžΆαžαŸ‹αž…αŸαž‰αž“αž·αž„αžŸαž˜αžΆαžŸαž—αžΆαž–;
  • αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš;
  • αžšαžΌαž”αžαŸ†αžŽαžΆαž„αŸ”

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αž€αŸ’αž“αž»αž„β€‹αž‚αž˜αŸ’αžšαŸ„αž„β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹αžšαž”αžŸαŸ‹β€‹αž’αŸ’αž“αž€β€‹αž“αž·αž–αž“αŸ’αž’αŸ– LunaSVG ΠΈ PlutoSVG.

ямСнСния:

  • αž”αŸ’αžšαžΎ SemVer αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αŸ†αžŽαŸ‚αž›αŸαžαŸ”
  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž˜αŸ‰αžΆαž€αŸ’αžšαžΌ PLUTOVG_EMPTY_POINT αž“αž·αž„ PLUTOVG_EMPTY_RECT αŸ”

αž›αŸαžαž€αžΌαžŠ:

# αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› int main(void) { const int width = 150; const int αž€αž˜αŸ’αž–αžŸαŸ‹ = 150; const float center_x = αž‘αž‘αžΉαž„ / 2.f; const float center_y = αž€αž˜αŸ’αž–αžŸαŸ‹ / 2.f; const float face_radius = 70; const float mouth_radius = 50; const float eye_radius = 10; const float eye_offset_x = 25; const float eye_offset_y = 20; const float eye_x = center_x β€” eye_offset_x; const float eye_y = αž€αžŽαŸ’αžαžΆαž›_y β€” eye_offset_y; plutovg_surface_t * αž•αŸ’αž‘αŸƒ = plutovg_surface_create(αž‘αž‘αžΉαž„, αž€αž˜αŸ’αž–αžŸαŸ‹); plutovg_canvas_t* canvas = plutovg_canvas_create(αž•αŸ’αž‘αŸƒ); plutovg_canvas_save(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_arc(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, center_x, center_y, face_radius, 0, PLUTOVG_TWO_PI, 0); plutovg_canvas_set_rgb(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 1, 1, 0); plutovg_canvas_fill_preserve(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_set_rgb(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 0, 0, 0); plutovg_canvas_set_line_width(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 5); plutovg_canvas_stroke(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_restore(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_save(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_arc(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, eye_x, eye_y, eye_radius, 0, PLUTOVG_TWO_PI, 0); plutovg_canvas_arc(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, center_x + eye_offset_x, eye_y, eye_radius, 0, PLUTOVG_TWO_PI, 0); plutovg_canvas_set_rgb(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 0, 0, 0); plutovg_canvas_fill(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_restore(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_save(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_arc(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, center_x, center_y, mouth_radius, 0, PLUTOVG_PI, 0); plutovg_canvas_set_rgb(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 0, 0, 0); plutovg_canvas_set_line_width(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹, 5); plutovg_canvas_stroke(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_canvas_restore(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_surface_write_to_png(αž•αŸ’αž‘αŸƒ, "smiley.png"); plutovg_canvas_destroy(αž•αŸ’αž‘αžΆαŸ†αž„αž€αŸ’αžšαžŽαžΆαžαŸ‹); plutovg_surface_destroy(αž•αŸ’αž‘αŸƒ); αžαŸ’αžšαž‘αž”αŸ‹ 0; }

αž‚αžΌαžš πŸ˜ƒ αž αžΎαž™αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš smiley.png αŸ” πŸ™‚

αž”αŸ’αžšαž—αž–: linux.org.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹