void loop() { int i; SDL_Event event; /* Check for events */ while (SDL_PollEvent(&event)) { SDLTest_CommonEvent(state, &event, &done); } for (i = 0; i < state->num_windows; ++i) { if (state->windows[i] == NULL) continue; if (test_composite) { if (!DrawComposite(&drawstates[i])) done = 1; } else { if (!Draw(&drawstates[i])) done = 1; } } #ifdef __EMSCRIPTEN__ if (done) { emscripten_cancel_main_loop(); } #endif }
MAGICK_NET_EXPORT void DrawingWand_Composite(DrawingWand *instance, const double x, const double y, const double width, const double height, const size_t compositeOperator, const Image *image, ExceptionInfo **exception) { MagickWand *magick_wand; magick_wand = NewMagickWandFromImage(image); DrawComposite(instance, (const CompositeOperator)compositeOperator, x, y, width, height, magick_wand); MAGICK_NET_SET_DRAW_EXCEPTION; }
static bool HHVM_METHOD(ImagickDraw, composite, int64_t compose, double x, double y, double width, double height, const Object& compositeWand) { auto wand = getDrawingWandResource(Object{this_}); Object compositeWandObj(compositeWand); auto magick = getMagickWandResource(compositeWandObj); auto status = DrawComposite(wand->getWand(), (CompositeOperator)compose, x, y, width, height, magick->getWand()); if (status == MagickFalse) { IMAGICKDRAW_THROW("Compositing image failed"); } return true; }
// Given a pattern name (which MUST have a leading #) and a pattern file, // set up a pattern URL for later reference in the specified drawing wand // Currently only used in Text Effect 2 void set_tile_pattern(DrawingWand *d_wand,char *pattern_name,char *pattern_file) { MagickWand *t_wand; long w,h; t_wand=NewMagickWand(); MagickReadImage(t_wand,pattern_file); // Read the tile's width and height w = MagickGetImageWidth(t_wand); h = MagickGetImageHeight(t_wand); DrawPushPattern(d_wand, pattern_name+1, 0, 0, w, h); DrawComposite(d_wand, SrcOverCompositeOp, 0, 0, 0, 0, t_wand); DrawPopPattern(d_wand); DrawSetFillPatternURL(d_wand, pattern_name); }