@@ -173,6 +173,10 @@ void goat_scale_linear_set_ticks (GoatScaleLinear *scale, gdouble major, gint mi
173173}
174174
175175
176+ static inline gboolean is_major_tick (gint i , gint minors_per_major )
177+ {
178+ return (i == 0 ) || (i % minors_per_major == 0 );
179+ }
176180/**
177181 * @param x/y-nil in pixel
178182 * @param x/y-factor convert unit to pixel
@@ -184,11 +188,7 @@ static void draw (GoatScale *scale, cairo_t *cr, gint left, gint right, gint top
184188GoatScaleLinearPrivate * priv = goat_scale_linear_get_instance_private (self );
185189
186190const double step_minor = (priv -> major_delta / priv -> minors_per_major );
187- const int register start = (top - nil ) / step_minor / factor ;
188- const int register end = (bottom - nil ) / step_minor / factor ;
189- g_print ("[] bottom %i top %i _nil %lf\n" , bottom , top , nil );
190- g_print ("> start=%i end=%i %lf _factor\n" , start , end , factor );
191- int register i ;
191+ gint register i ;
192192const gint width_major = priv -> width_major ;
193193const gint width_minor = priv -> width_minor ;
194194GdkRGBA color_minor = priv -> color_minor ;
@@ -202,8 +202,10 @@ static void draw (GoatScale *scale, cairo_t *cr, gint left, gint right, gint top
202202cairo_set_line_width (cr , 1. );
203203
204204if (where == GOAT_POSITION_LEFT ) {
205+ const int register start = (top - nil ) / step_minor / factor ;
206+ const int register end = (bottom - nil ) / step_minor / factor ;
205207for (i = start ; i <= end ; i ++ ) {
206- const gboolean register majorstip = ( i % priv -> minors_per_major == 0 );
208+ const gboolean register majorstip = is_major_tick ( i , priv -> minors_per_major );
207209const double register y = nil + top + step_minor * factor * i ;
208210if (grid ) {
209211cairo_move_to (cr , right , y );
@@ -231,8 +233,10 @@ static void draw (GoatScale *scale, cairo_t *cr, gint left, gint right, gint top
231233}
232234}
233235if (where == GOAT_POSITION_RIGHT ) {
236+ const int register start = (top - nil ) / step_minor / factor ;
237+ const int register end = (bottom - nil ) / step_minor / factor ;
234238for (i = start ; i <= end ; i ++ ) {
235- const gboolean register majorstip = ( i % priv -> minors_per_major == 0 );
239+ const gboolean register majorstip = is_major_tick ( i , priv -> minors_per_major );
236240const double register y = nil + top + step_minor * factor * i ;
237241if (grid ) {
238242cairo_move_to (cr , left , y );
@@ -260,8 +264,10 @@ static void draw (GoatScale *scale, cairo_t *cr, gint left, gint right, gint top
260264}
261265}
262266if (where == GOAT_POSITION_BOTTOM ) {
267+ const int register start = (left - nil ) / step_minor / factor ;
268+ const int register end = (right - nil ) / step_minor / factor ;
263269for (i = start ; i <= end ; i ++ ) {
264- const gboolean register majorstip = ( i % priv -> minors_per_major == 0 );
270+ const gboolean register majorstip = is_major_tick ( i , priv -> minors_per_major );
265271const double register x = nil + left + step_minor * factor * i ;
266272if (grid ) {
267273cairo_move_to (cr , x , top );
@@ -289,8 +295,10 @@ static void draw (GoatScale *scale, cairo_t *cr, gint left, gint right, gint top
289295}
290296}
291297if (where == GOAT_POSITION_TOP ) {
298+ const int register start = (left - nil ) / step_minor / factor ;
299+ const int register end = (right - nil ) / step_minor / factor ;
292300for (i = start ; i <= end ; i ++ ) {
293- const gboolean register majorstip = ( i % priv -> minors_per_major == 0 );
301+ const gboolean register majorstip = is_major_tick ( i , priv -> minors_per_major );
294302const double register x = nil + left + step_minor * factor * i ;
295303if (grid ) {
296304cairo_move_to (cr , x , bottom );
0 commit comments