Untitled

                Never    
C
       
double xy, mu, delta;
delta = double(r.w*ram.h);
mu = double(ram.x - r.x)*double(ram.h)/double(delta);
double n = r.x  + mu*(r.w);
double m = r.y;

delta = -double(r.h*ram.w);
mu = -double(ram.y - r.y)*double(ram.w)/double(delta);
n = r.x;
m = r.y + mu*(r.h);

if (ram.x >= r.x && r.y >= ram.y && r.y <= ram.y + ram.h)
		SDL_RenderDrawLine(renderer, n, m, r.x + r.w, r.y);
	else if (r.y >= ram.y && r.x + r.w < ram.x + ram.w)
		SDL_RenderDrawLine(renderer, r.x, r.y, r.x + r.w, r.y);
	if (ram.x >= r.x && r.y + r.h >= ram.y && r.y + r.h <= ram.y + ram.h)
		SDL_RenderDrawLine(renderer, n, m + r.h, r.x + r.w, r.y + r.h);
	else if (r.y + r.h <= ram.y + ram.h && r.x + r.w < ram.x + ram.w)
		SDL_RenderDrawLine(renderer, r.x, r.y + r.h, r.x + r.w, r.y + r.h);

if (ram.y >= r.y && r.x >= ram.x && r.x <= ram.x + ram.w)
		SDL_RenderDrawLine(renderer, n, m, r.x, r.y + r.h);
	else if (r.y >= ram.y && r.x >= ram.x && r.y + r.h < ram.y + ram.h)
		SDL_RenderDrawLine(renderer, r.x, r.y, r.x, r.y + r.h);
	if (ram.y >= r.y && r.x + r.w >= ram.x && r.x + r.w <= ram.x + ram.w)
		SDL_RenderDrawLine(renderer, n + r.w, m, r.x + r.w, r.y + r.h);
	else if (r.y >= ram.y && r.x + r.w <= ram.x + ram.w && r.y + r.h < ram.y + ram.h)
		SDL_RenderDrawLine(renderer, r.x + r.w, r.y, r.x + r.w, r.y + r.h);

DrawCircle(renderer, X_circle, Y_circle, radius);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderFillRect(renderer, &r);
SDL_SetRenderDrawColor(renderer, 194, 41, 102, 1);
DrawRectangle(renderer, ram);
DrawDoterRectangle(renderer, r, ram);
DrawDoterCircle(renderer, X_circle, Y_circle, radius, roundf(i));

void DrawDoterCircle(SDL_Renderer * renderer, int centreX, int centreY, int radius, int i) {
   	
   	const int diameter = (radius * 2);

   	int x = (radius - 1);
   	int y = 0;
   	int tx = 1;
   	int ty = 1;
   	int error = (tx - diameter);
   	int tmp = i/2;

   	while (x >= y) {
   		if (tmp < i)
   	  	{
       		SDL_RenderDrawPoint(renderer, centreX + x, centreY - y);
        	SDL_RenderDrawPoint(renderer, centreX + x, centreY + y);
        	SDL_RenderDrawPoint(renderer, centreX - x, centreY - y);
        	SDL_RenderDrawPoint(renderer, centreX - x, centreY + y);
        	SDL_RenderDrawPoint(renderer, centreX + y, centreY - x);
        	SDL_RenderDrawPoint(renderer, centreX + y, centreY + x);
        	SDL_RenderDrawPoint(renderer, centreX - y, centreY - x);
        	SDL_RenderDrawPoint(renderer, centreX - y, centreY + x);
  	  	}

  		if (tmp == i*2) tmp = 0; else tmp++;
    	if (error <= 0) { y++; error += ty; ty += 2; }
    	if (error > 0 ) { x--; tx += 2; error += (tx - diameter); }
    }
}

void DrawRectangle(SDL_Renderer * renderer, SDL_Rect r) {
   	SDL_RenderDrawLine(renderer, r.x, r.y, r.x + r.w, r.y);
   	SDL_RenderDrawLine(renderer, r.x + r.w, r.y, r.x + r.w, r.y + r.h);
   	SDL_RenderDrawLine(renderer, r.x + r.w, r.y + r.h, r.x, r.y + r.h);
   	SDL_RenderDrawLine(renderer, r.x, r.y + r.h, r.x, r.y);
}

Raw Text