/* * Copyright 2022 Frederico de Oliveira Linhares * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "graphic.h" #include "color.h" static mrb_value cg_mGraphic_set_color(mrb_state *mrb, mrb_value self) { struct cg_color *color; mrb_get_args(mrb, "d", &color, &cg_color_type); SDL_SetRenderDrawColor( cg_core.renderer, color->data.r, color->data.g, color->data.b, color->data.a); return self; } static mrb_value cg_mGraphic_draw_point(mrb_state *mrb, mrb_value self) { mrb_int x, y; mrb_get_args(mrb, "ii", &x, &y); SDL_RenderDrawPoint(cg_core.renderer, x, y); return self; } static mrb_value cg_mGraphic_draw_line(mrb_state *mrb, mrb_value self) { mrb_int x1, y1, x2, y2; mrb_get_args(mrb, "iiii", &x1, &y1, &x2, &y2); SDL_RenderDrawLine(cg_core.renderer, x1, y1, x2, y2); return self; } void cg_graphic_init(mrb_state *mrb) { struct RClass *cg_m, *cg_mGraphic; cg_m = mrb_module_get(mrb, "CandyGear"); cg_mGraphic = mrb_define_module_under(mrb, cg_m, "Graphic"); mrb_define_class_method( mrb, cg_mGraphic, "set_color", cg_mGraphic_set_color, MRB_ARGS_REQ(1)); mrb_define_class_method( mrb, cg_mGraphic, "draw_point", cg_mGraphic_draw_point, MRB_ARGS_REQ(2)); mrb_define_class_method( mrb, cg_mGraphic, "draw_line", cg_mGraphic_draw_line, MRB_ARGS_REQ(4)); }