Lines Matching +full:- +full:c
2 * @file lv_grid.c
20 #define layout_list_def LV_GLOBAL_DEFAULT()->layout_list
25 #define IS_FR(x) (x >= LV_COORD_MAX - 100)
26 #define IS_CONTENT(x) (x == LV_COORD_MAX - 101)
27 #define GET_FR(x) (x - (LV_COORD_MAX - 100))
59 static void calc_cols(lv_obj_t * cont, lv_grid_calc_t * c);
60 static void calc_rows(lv_obj_t * cont, lv_grid_calc_t * c);
61 static void item_repos(lv_obj_t * item, lv_grid_calc_t * c, item_repos_hint_t * hint);
196 lv_grid_calc_t c; in grid_update() local
197 calc(cont, &c); in grid_update()
206 hint.grid_abs.x = pad_left + cont->coords.x1 - lv_obj_get_scroll_x(cont); in grid_update()
207 hint.grid_abs.y = pad_top + cont->coords.y1 - lv_obj_get_scroll_y(cont); in grid_update()
210 for(i = 0; i < cont->spec_attr->child_cnt; i++) { in grid_update()
211 lv_obj_t * item = cont->spec_attr->children[i]; in grid_update()
212 item_repos(item, &c, &hint); in grid_update()
214 calc_free(&c); in grid_update()
250 bool auto_w = w_set == LV_SIZE_CONTENT && !cont->w_layout; in calc()
252 …calc_out->grid_w = grid_align(cont_w, auto_w, get_grid_col_align(cont), col_gap, calc_out->col_num… in calc()
253 calc_out->x, rev); in calc()
255 bool auto_h = h_set == LV_SIZE_CONTENT && !cont->h_layout; in calc()
257 …calc_out->grid_h = grid_align(cont_h, auto_h, get_grid_row_align(cont), row_gap, calc_out->row_num… in calc()
258 calc_out->y, false); in calc()
269 lv_free(calc->x); in calc_free()
270 lv_free(calc->y); in calc_free()
271 lv_free(calc->w); in calc_free()
272 lv_free(calc->h); in calc_free()
275 static void calc_cols(lv_obj_t * cont, lv_grid_calc_t * c) in calc_cols() argument
301 c->col_num = count_tracks(col_templ); in calc_cols()
302 c->x = lv_malloc(sizeof(int32_t) * c->col_num); in calc_cols()
303 c->w = lv_malloc(sizeof(int32_t) * c->col_num); in calc_cols()
307 for(i = 0; i < c->col_num; i++) { in calc_cols()
323 if(size >= 0) c->w[i] = size; in calc_cols()
324 else c->w[i] = 0; in calc_cols()
331 for(i = 0; i < c->col_num; i++) { in calc_cols()
337 grid_w += c->w[i]; in calc_cols()
340 c->w[i] = x; in calc_cols()
346 cont_w -= col_gap * (c->col_num - 1); in calc_cols()
347 int32_t free_w = cont_w - grid_w; in calc_cols()
350 for(i = 0; i < c->col_num && col_fr_cnt; i++) { in calc_cols()
354 c->w[i] = lv_div_round_closest(free_w * f, col_fr_cnt); in calc_cols()
358 col_fr_cnt -= f; in calc_cols()
359 free_w -= c->w[i]; in calc_cols()
368 static void calc_rows(lv_obj_t * cont, lv_grid_calc_t * c) in calc_rows() argument
391 c->row_num = count_tracks(row_templ); in calc_rows()
392 c->y = lv_malloc(sizeof(int32_t) * c->row_num); in calc_rows()
393 c->h = lv_malloc(sizeof(int32_t) * c->row_num); in calc_rows()
396 for(i = 0; i < c->row_num; i++) { in calc_rows()
412 if(size >= 0) c->h[i] = size; in calc_rows()
413 else c->h[i] = 0; in calc_rows()
420 for(i = 0; i < c->row_num; i++) { in calc_rows()
426 grid_h += c->h[i]; in calc_rows()
429 c->h[i] = x; in calc_rows()
435 int32_t cont_h = lv_obj_get_content_height(cont) - row_gap * (c->row_num - 1); in calc_rows()
436 int32_t free_h = cont_h - grid_h; in calc_rows()
439 for(i = 0; i < c->row_num && row_fr_cnt; i++) { in calc_rows()
443 c->h[i] = lv_div_round_closest(free_h * f, row_fr_cnt); in calc_rows()
447 row_fr_cnt -= f; in calc_rows()
448 free_h -= c->h[i]; in calc_rows()
461 * @param child_id_ext helper value if the ID of the child is know (order from the oldest) else -1
464 static void item_repos(lv_obj_t * item, lv_grid_calc_t * c, item_repos_hint_t * hint) in item_repos() argument
476 int32_t col_x1 = c->x[col_pos]; in item_repos()
477 int32_t col_x2 = c->x[col_pos + col_span - 1] + c->w[col_pos + col_span - 1]; in item_repos()
478 int32_t col_w = col_x2 - col_x1; in item_repos()
480 int32_t row_y1 = c->y[row_pos]; in item_repos()
481 int32_t row_y2 = c->y[row_pos + row_span - 1] + c->h[row_pos + row_span - 1]; in item_repos()
482 int32_t row_h = row_y2 - row_y1; in item_repos()
492 int32_t item_w = lv_area_get_width(&item->coords); in item_repos()
493 int32_t item_h = lv_area_get_height(&item->coords); in item_repos()
498 x = c->x[col_pos] + lv_obj_get_style_margin_left(item, LV_PART_MAIN); in item_repos()
499 item->w_layout = 0; in item_repos()
502 x = c->x[col_pos] + lv_obj_get_style_margin_left(item, LV_PART_MAIN); in item_repos()
503 item_w = col_w - get_margin_hor(item); in item_repos()
504 item->w_layout = 1; in item_repos()
507 … x = c->x[col_pos] + (col_w - item_w) / 2 + (lv_obj_get_style_margin_left(item, LV_PART_MAIN) - in item_repos()
509 item->w_layout = 0; in item_repos()
512 …x = c->x[col_pos] + col_w - lv_obj_get_width(item) - lv_obj_get_style_margin_right(item, LV_PART_M… in item_repos()
513 item->w_layout = 0; in item_repos()
520 y = c->y[row_pos] + lv_obj_get_style_margin_top(item, LV_PART_MAIN); in item_repos()
521 item->h_layout = 0; in item_repos()
524 y = c->y[row_pos] + lv_obj_get_style_margin_top(item, LV_PART_MAIN); in item_repos()
525 item_h = row_h - get_margin_ver(item); in item_repos()
526 item->h_layout = 1; in item_repos()
529 … y = c->y[row_pos] + (row_h - item_h) / 2 + (lv_obj_get_style_margin_top(item, LV_PART_MAIN) - in item_repos()
531 item->h_layout = 0; in item_repos()
534 …y = c->y[row_pos] + row_h - lv_obj_get_height(item) - lv_obj_get_style_margin_bottom(item, LV_PART… in item_repos()
535 item->h_layout = 0; in item_repos()
542 lv_area_copy(&old_coords, &item->coords); in item_repos()
544 lv_area_set_width(&item->coords, item_w); in item_repos()
545 lv_area_set_height(&item->coords, item_h); in item_repos()
563 int32_t diff_x = hint->grid_abs.x + x - item->coords.x1; in item_repos()
564 int32_t diff_y = hint->grid_abs.y + y - item->coords.y1; in item_repos()
567 item->coords.x1 += diff_x; in item_repos()
568 item->coords.x2 += diff_x; in item_repos()
569 item->coords.y1 += diff_y; in item_repos()
570 item->coords.y2 += diff_y; in item_repos()
609 grid_size -= gap; in grid_align()
617 pos_array[0] = (cont_size - grid_size) / 2; in grid_align()
620 pos_array[0] = cont_size - grid_size; in grid_align()
624 gap = (int32_t)(cont_size - grid_size) / (int32_t)(track_num - 1); in grid_align()
627 gap = (int32_t)(cont_size - grid_size) / (int32_t)(track_num); in grid_align()
631 gap = (int32_t)(cont_size - grid_size) / (int32_t)(track_num + 1); in grid_align()
640 for(i = 0; i < track_num - 1; i++) { in grid_align()
644 int32_t total_gird_size = pos_array[track_num - 1] + size_array[track_num - 1] - pos_array[0]; in grid_align()
648 pos_array[i] = cont_size - pos_array[i] - size_array[i]; in grid_align()