X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=menu%2Fm_format.c;h=2d681a6062c614943442834ca491f70e3976c3f2;hp=829fbe8caf6fe51d96e7c3b9611d01a7c49b5d9d;hb=11d10ad0a17342a8e773a8f1948a9cc4c5f32ce7;hpb=0eb88fc5281804773e2a0c7a488a4452463535ce diff --git a/menu/m_format.c b/menu/m_format.c index 829fbe8c..2d681a60 100644 --- a/menu/m_format.c +++ b/menu/m_format.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998 Free Software Foundation, Inc. * + * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -27,7 +27,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Juergen Pfeifer 1995,1997 * + * Author: Juergen Pfeifer, 1995,1997 * ****************************************************************************/ /*************************************************************************** @@ -37,14 +37,14 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_format.c,v 1.9 1999/05/16 17:25:04 juergen Exp $") +MODULE_ID("$Id: m_format.c,v 1.18 2012/06/09 23:54:02 tom Exp $") #define minimum(a,b) ((a)<(b) ? (a): (b)) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_format(MENU *menu, int rows, int cols) -| +| | Description : Sets the maximum number of rows and columns of items | that may be displayed at one time on a menu. If the | menu contains more items than can be displayed at @@ -55,66 +55,72 @@ MODULE_ID("$Id: m_format.c,v 1.9 1999/05/16 17:25:04 juergen Exp $") | E_NOT_CONNECTED - there are no items connected | E_POSTED - the menu is already posted +--------------------------------------------------------------------------*/ -int set_menu_format(MENU *menu, int rows, int cols) +NCURSES_EXPORT(int) +set_menu_format(MENU * menu, int rows, int cols) { int total_rows, total_cols; - - if (rows<0 || cols<0) + + T((T_CALLED("set_menu_format(%p,%d,%d)"), (void *)menu, rows, cols)); + + if (rows < 0 || cols < 0) RETURN(E_BAD_ARGUMENT); - + if (menu) { - if ( menu->status & _POSTED ) + if (menu->status & _POSTED) RETURN(E_POSTED); - + if (!(menu->items)) RETURN(E_NOT_CONNECTED); - - if (rows==0) + + if (rows == 0) rows = menu->frows; - if (cols==0) + if (cols == 0) cols = menu->fcols; - + if (menu->pattern) Reset_Pattern(menu); - - menu->frows = rows; - menu->fcols = cols; - - assert(rows>0 && cols>0); - total_rows = (menu->nitems - 1)/cols + 1; - total_cols = (menu->status & O_ROWMAJOR) ? - minimum(menu->nitems,cols) : - (menu->nitems-1)/total_rows + 1; - - menu->rows = total_rows; - menu->cols = total_cols; - menu->arows = minimum(total_rows,rows); - menu->toprow = 0; + + menu->frows = (short)rows; + menu->fcols = (short)cols; + + assert(rows > 0 && cols > 0); + total_rows = (menu->nitems - 1) / cols + 1; + total_cols = (menu->opt & O_ROWMAJOR) ? + minimum(menu->nitems, cols) : + (menu->nitems - 1) / total_rows + 1; + + menu->rows = (short)total_rows; + menu->cols = (short)total_cols; + menu->arows = (short)minimum(total_rows, rows); + menu->toprow = 0; menu->curitem = *(menu->items); assert(menu->curitem); - menu->status |= _LINK_NEEDED; + SetStatus(menu, _LINK_NEEDED); _nc_Calculate_Item_Length_and_Width(menu); } else { - if (rows>0) _nc_Default_Menu.frows = rows; - if (cols>0) _nc_Default_Menu.fcols = cols; + if (rows > 0) + _nc_Default_Menu.frows = (short)rows; + if (cols > 0) + _nc_Default_Menu.fcols = (short)cols; } - + RETURN(E_OK); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void menu_format(const MENU *menu, int *rows, int *cols) -| +| | Description : Returns the maximum number of rows and columns that may | be displayed at one time on menu. | | Return Values : - +--------------------------------------------------------------------------*/ -void menu_format(const MENU *menu, int *rows, int *cols) +NCURSES_EXPORT(void) +menu_format(const MENU * menu, int *rows, int *cols) { if (rows) *rows = Normalize_Menu(menu)->frows;