From f533df23fb1cd3044aaa02bf74625e9b53c032c1 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Thu, 23 Jan 2014 17:57:37 +0000 Subject: mosaic node --- rotord/src/cvimage.h | 32 ++++++++++++++++++++++++++++++-- rotord/src/libavwrapper.cpp | 5 ++++- rotord/src/nodes_drawing.h | 45 +++++++++++++++++++++++++-------------------- rotord/src/rotor.cpp | 1 + 4 files changed, 60 insertions(+), 23 deletions(-) diff --git a/rotord/src/cvimage.h b/rotord/src/cvimage.h index b356f82..25cf3e8 100644 --- a/rotord/src/cvimage.h +++ b/rotord/src/cvimage.h @@ -218,10 +218,38 @@ namespace Rotor { */ return t; } - void crop(int _w,int _h){ //change borders, crop/ extend + void crop(int _w,int _h){ //change borders, crop/ extend, centred + cv::Mat source; + int X,Y,W,H; + //do crop part if ( _w &settings):Shape() { + Mosaic(map &settings):Mosaic() { base_settings(settings); }; ~Mosaic(){}; Mosaic* clone(map &_settings) { return new Mosaic(_settings);}; void vector_output(cairo_t * cr,const Frame_spec &frame){ - colour=Colour(attributes["colour"]->value); - cairo_set_source_rgb(cr, colour.Rdouble(),colour.Gdouble(),colour.Bdouble()); - switch(attributes["shape"]->intVal) { - case SHAPE_square: - cairo_rectangle(cr,-frame.w/2,-frame.w/2,frame.w,frame.w); - break; - case SHAPE_circle: - cairo_arc(cr,0,0,frame.w/2,0.0, 2 * M_PI); - break; - case SHAPE_triangle: - //subtracting PI/2 =(1.5*PI)/3 so the triangle is pointing up - cairo_line_to(cr,0,-frame.w/2); - cairo_line_to(cr,cos((0.5 * M_PI)/3)*frame.w/2,sin((0.5 * M_PI)/3)*frame.w/2); - cairo_line_to(cr,cos((2.5 * M_PI)/3)*frame.w/2,sin((2.5 * M_PI)/3)*frame.w/2); - cairo_close_path(cr); - break; + double vpix=max(parameters["pixels"]->value,1.0); + double pixel_size=frame.h/vpix; + int h_padded=ceil(vpix/2)*2; + int w_padded=ceil((((vpix/frame.h)*frame.w))/2)*2; + + Image *in1=image_inputs[0]->get(frame); + if (in1){ + Image in=*(in1); + in.crop(w_padded*pixel_size,h_padded*pixel_size); + in.resize(w_padded,h_padded); + int x_start=-((w_padded*pixel_size)/2); + int y_start=-((h_padded*pixel_size)/2); + cairo_translate(cr,x_start,y_start); + for (int i=0;i(); add_type("blur",new Blur(),category["FX"]); + add_type("mosaic",new Mosaic(),category["FX"]); //add_type("vhs",new VHS(),category["FX"]); add_type("echo_trails",new Echo_trails(),category["FX"]); add_type("video_feedback",new Video_feedback(),category["FX"]); -- cgit v1.2.3