Lua inputbox: Allow negative values and floating point input. Unfinished, has problems of display (mouse cursor cleaning, display cleaning and alignment, removing redundant digits like in 15.000)
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1354 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
		
							parent
							
								
									f05906f99b
								
							
						
					
					
						commit
						14464fef39
					
				@ -4443,7 +4443,7 @@ void Button_Text()
 | 
			
		||||
    switch(clicked_button)
 | 
			
		||||
    {
 | 
			
		||||
      case 1: // Texte saisi
 | 
			
		||||
      Readline_ex(50,20,str,29,250,0);
 | 
			
		||||
      Readline_ex(50,20,str,29,250,0,0);
 | 
			
		||||
      preview_is_needed=1;
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										83
									
								
								factory.c
									
									
									
									
									
								
							
							
						
						
									
										83
									
								
								factory.c
									
									
									
									
									
								
							@ -24,6 +24,8 @@
 | 
			
		||||
 * The brush factory allows you to generate brushes with Lua code.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
#include "brush.h"
 | 
			
		||||
#include "buttons.h"
 | 
			
		||||
#include "engine.h"
 | 
			
		||||
@ -367,9 +369,11 @@ int L_GetTransColor(lua_State* L)
 | 
			
		||||
int L_InputBox(lua_State* L)
 | 
			
		||||
{
 | 
			
		||||
  const int max_settings = 9;
 | 
			
		||||
  int min_value[max_settings];
 | 
			
		||||
  int max_value[max_settings];
 | 
			
		||||
  int current_value[max_settings];
 | 
			
		||||
  const int args_per_setting = 5;
 | 
			
		||||
  double min_value[max_settings];
 | 
			
		||||
  double max_value[max_settings];
 | 
			
		||||
  byte decimal_places[max_settings];
 | 
			
		||||
  double current_value[max_settings];
 | 
			
		||||
  const char * label[max_settings];
 | 
			
		||||
  unsigned short control[max_settings*3+1]; // Each value has at most 3 widgets.
 | 
			
		||||
  enum CONTROL_TYPE {
 | 
			
		||||
@ -389,20 +393,20 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
  unsigned int max_label_length;
 | 
			
		||||
  int setting;
 | 
			
		||||
  short clicked_button;
 | 
			
		||||
  char  str[5];
 | 
			
		||||
  char  str[40];
 | 
			
		||||
  short close_window = 0;
 | 
			
		||||
  
 | 
			
		||||
  nb_args = lua_gettop (L);
 | 
			
		||||
  
 | 
			
		||||
  if (nb_args < 5)
 | 
			
		||||
  if (nb_args < 6)
 | 
			
		||||
  {
 | 
			
		||||
    return luaL_error(L, "InputBox: Less than 5 arguments");
 | 
			
		||||
    return luaL_error(L, "InputBox: Less than 6 arguments");
 | 
			
		||||
  }
 | 
			
		||||
  if ((nb_args - 1) % 4)
 | 
			
		||||
  if ((nb_args - 1) % args_per_setting)
 | 
			
		||||
  {
 | 
			
		||||
    return luaL_error(L, "InputBox: Wrong number of arguments");
 | 
			
		||||
  }
 | 
			
		||||
  nb_settings = (nb_args-1)/4;
 | 
			
		||||
  nb_settings = (nb_args-1)/args_per_setting;
 | 
			
		||||
  if (nb_settings > max_settings)
 | 
			
		||||
  {
 | 
			
		||||
    return luaL_error(L, "InputBox: Too many settings, limit reached");
 | 
			
		||||
@ -418,17 +422,23 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
  
 | 
			
		||||
  for (setting=0; setting<nb_settings; setting++)
 | 
			
		||||
  {
 | 
			
		||||
    label[setting] = lua_tostring(L,setting*4+2);
 | 
			
		||||
    label[setting] = lua_tostring(L,setting*args_per_setting+2);
 | 
			
		||||
    if (strlen(label[setting]) > max_label_length)
 | 
			
		||||
      max_label_length = strlen(label[setting]);
 | 
			
		||||
      
 | 
			
		||||
    current_value[setting] = lua_tonumber(L,setting*4+3);
 | 
			
		||||
    min_value[setting] = lua_tonumber(L,setting*4+4);
 | 
			
		||||
    max_value[setting] = lua_tonumber(L,setting*4+5);
 | 
			
		||||
    if (max_value[setting] > 9999)
 | 
			
		||||
      max_value[setting] = 9999;
 | 
			
		||||
      
 | 
			
		||||
    current_value[setting] = lua_tonumber(L,setting*args_per_setting+3);
 | 
			
		||||
    min_value[setting] = lua_tonumber(L,setting*args_per_setting+4);
 | 
			
		||||
    /*if (min_value[setting] < -999999999999999.0)
 | 
			
		||||
      min_value[setting] = -999999999999999.0;*/
 | 
			
		||||
    max_value[setting] = lua_tonumber(L,setting*args_per_setting+5);
 | 
			
		||||
    /*if (max_value[setting] > 999999999999999.0)
 | 
			
		||||
      max_value[setting] = 999999999999999.0;*/
 | 
			
		||||
    decimal_places[setting] = lua_tonumber(L,setting*args_per_setting+6);
 | 
			
		||||
    if (decimal_places[setting]>15)
 | 
			
		||||
        decimal_places[setting]=15;
 | 
			
		||||
    // Keep current value in range
 | 
			
		||||
    current_value[setting] = Fround(current_value[setting], decimal_places[setting]);
 | 
			
		||||
 | 
			
		||||
    if (current_value[setting] < min_value[setting])
 | 
			
		||||
      current_value[setting] = min_value[setting];
 | 
			
		||||
    else if (current_value[setting] > max_value[setting])
 | 
			
		||||
@ -439,7 +449,7 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
    max_label_length=25;
 | 
			
		||||
 | 
			
		||||
  Hide_cursor();
 | 
			
		||||
  Open_window(91+max_label_length*8,44+nb_settings*17,window_caption);
 | 
			
		||||
  Open_window(115+max_label_length*8,44+nb_settings*17,window_caption);
 | 
			
		||||
 | 
			
		||||
  // OK
 | 
			
		||||
  Window_set_normal_button( 7, 25 + 17 * nb_settings, 51,14,"OK" , 0,1,SDLK_RETURN);
 | 
			
		||||
@ -455,7 +465,7 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
    if (min_value[setting]==0 && max_value[setting]==1)
 | 
			
		||||
    {
 | 
			
		||||
      // Checkbox
 | 
			
		||||
      Window_set_normal_button(12+max_label_length*8+30, 19+setting*17, 15,13,current_value[setting]?"X":"", 0,1,KEY_NONE);
 | 
			
		||||
      Window_set_normal_button(12+max_label_length*8+42, 19+setting*17, 15,13,current_value[setting]?"X":"", 0,1,KEY_NONE);
 | 
			
		||||
      control[Window_nb_buttons] = CONTROL_CHECKBOX | setting;
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
@ -465,16 +475,15 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
      control[Window_nb_buttons] = CONTROL_INPUT_MINUS | setting;
 | 
			
		||||
 | 
			
		||||
      // Numeric input field
 | 
			
		||||
      Window_display_frame_in(12+max_label_length*8+21, 20+setting*17,35, 11);
 | 
			
		||||
      Window_set_input_button(12+max_label_length*8+21, 20+setting*17,4);
 | 
			
		||||
      Window_set_input_button(12+max_label_length*8+21, 20+setting*17,7);
 | 
			
		||||
      // Print editable value
 | 
			
		||||
      Num2str(current_value[setting],str,4);
 | 
			
		||||
      Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 4,MC_Black,MC_Light);
 | 
			
		||||
      Dec2str(current_value[setting],str,decimal_places[setting]);
 | 
			
		||||
      Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 7,MC_Black,MC_Light);
 | 
			
		||||
      //
 | 
			
		||||
      control[Window_nb_buttons] = CONTROL_INPUT | setting;
 | 
			
		||||
 | 
			
		||||
      // + Button
 | 
			
		||||
      Window_set_repeatable_button(12+max_label_length*8+60, 20+setting*17, 13,11,"+" , 0,1,KEY_NONE);
 | 
			
		||||
      Window_set_repeatable_button(12+max_label_length*8+84, 20+setting*17, 13,11,"+" , 0,1,KEY_NONE);
 | 
			
		||||
      control[Window_nb_buttons] = CONTROL_INPUT_PLUS | setting;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
@ -501,9 +510,9 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
          break;
 | 
			
		||||
          
 | 
			
		||||
        case CONTROL_INPUT:
 | 
			
		||||
          Num2str(current_value[setting],str,4);
 | 
			
		||||
          Readline(12+max_label_length*8+23, 22+setting*17,str,4,1);
 | 
			
		||||
          current_value[setting]=atoi(str);
 | 
			
		||||
          Dec2str(current_value[setting],str,decimal_places[setting]);
 | 
			
		||||
          Readline_ex(12+max_label_length*8+23, 22+setting*17,str,7,40,3,decimal_places[setting]);
 | 
			
		||||
          current_value[setting]=atof(str);
 | 
			
		||||
 | 
			
		||||
          if (current_value[setting] < min_value[setting])
 | 
			
		||||
            current_value[setting] = min_value[setting];
 | 
			
		||||
@ -511,8 +520,8 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
            current_value[setting] = max_value[setting];
 | 
			
		||||
          Hide_cursor();
 | 
			
		||||
          // Print editable value
 | 
			
		||||
          Num2str(current_value[setting],str,4);
 | 
			
		||||
          Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 4,MC_Black,MC_Light);
 | 
			
		||||
          Dec2str(current_value[setting],str,decimal_places[setting]);
 | 
			
		||||
          Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 7,MC_Black,MC_Light);
 | 
			
		||||
          //
 | 
			
		||||
          Display_cursor();
 | 
			
		||||
          
 | 
			
		||||
@ -522,10 +531,13 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
          if (current_value[setting] > min_value[setting])
 | 
			
		||||
          {
 | 
			
		||||
            current_value[setting]--;
 | 
			
		||||
            if (current_value[setting] < min_value[setting])
 | 
			
		||||
              current_value[setting] = min_value[setting];
 | 
			
		||||
              
 | 
			
		||||
            Hide_cursor();
 | 
			
		||||
            // Print editable value
 | 
			
		||||
            Num2str(current_value[setting],str,4);
 | 
			
		||||
            Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 4,MC_Black,MC_Light);
 | 
			
		||||
            Dec2str(current_value[setting],str,decimal_places[setting]);
 | 
			
		||||
            Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 7,MC_Black,MC_Light);
 | 
			
		||||
            //
 | 
			
		||||
            Display_cursor();
 | 
			
		||||
          }
 | 
			
		||||
@ -535,19 +547,22 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
          if (current_value[setting] < max_value[setting])
 | 
			
		||||
          {
 | 
			
		||||
            current_value[setting]++;
 | 
			
		||||
            if (current_value[setting] > max_value[setting])
 | 
			
		||||
              current_value[setting] = max_value[setting];
 | 
			
		||||
            
 | 
			
		||||
            Hide_cursor();
 | 
			
		||||
            // Print editable value
 | 
			
		||||
            Num2str(current_value[setting],str,4);
 | 
			
		||||
            Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 4,MC_Black,MC_Light);
 | 
			
		||||
            Dec2str(current_value[setting],str,decimal_places[setting]);
 | 
			
		||||
            Print_in_window_limited(12+max_label_length*8+23, 22+setting*17, str, 7,MC_Black,MC_Light);
 | 
			
		||||
            //
 | 
			
		||||
            Display_cursor();
 | 
			
		||||
          }
 | 
			
		||||
          break;
 | 
			
		||||
          
 | 
			
		||||
        case CONTROL_CHECKBOX:
 | 
			
		||||
          current_value[setting] = !current_value[setting];
 | 
			
		||||
          current_value[setting] = (current_value[setting]<0.5);
 | 
			
		||||
          Hide_cursor();
 | 
			
		||||
          Print_in_window(12+max_label_length*8+34, 22+setting*17, current_value[setting]?"X":" ",MC_Black,MC_Light);
 | 
			
		||||
          Print_in_window(12+max_label_length*8+46, 22+setting*17, current_value[setting]?"X":" ",MC_Black,MC_Light);
 | 
			
		||||
          Display_cursor();
 | 
			
		||||
          break;
 | 
			
		||||
      }
 | 
			
		||||
@ -566,7 +581,7 @@ int L_InputBox(lua_State* L)
 | 
			
		||||
  
 | 
			
		||||
  // One value per control
 | 
			
		||||
  for (setting=0; setting<nb_settings; setting++)
 | 
			
		||||
    lua_pushinteger(L, current_value[setting]);
 | 
			
		||||
    lua_pushnumber(L, current_value[setting]);
 | 
			
		||||
    
 | 
			
		||||
  return 1 + nb_settings;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1488,7 +1488,7 @@ byte Button_Load_or_Save(byte load, T_IO_Context *context)
 | 
			
		||||
                  strcpy(bookmark_label, Config.Bookmark_label[clicked_button-10]);
 | 
			
		||||
                  if (bookmark_label[7]==ELLIPSIS_CHARACTER)
 | 
			
		||||
                    bookmark_label[7]='\0';
 | 
			
		||||
                  if (Readline_ex(bookmark_dropdown[clicked_button-10]->Pos_X+3+10,bookmark_dropdown[clicked_button-10]->Pos_Y+2,bookmark_label,8,8,0))
 | 
			
		||||
                  if (Readline_ex(bookmark_dropdown[clicked_button-10]->Pos_X+3+10,bookmark_dropdown[clicked_button-10]->Pos_Y+2,bookmark_label,8,8,0,0))
 | 
			
		||||
                    strcpy(Config.Bookmark_label[clicked_button-10],bookmark_label);
 | 
			
		||||
                  Display_bookmark(bookmark_dropdown[clicked_button-10],clicked_button-10);
 | 
			
		||||
                  Display_cursor();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								misc.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								misc.c
									
									
									
									
									
								
							@ -24,6 +24,7 @@
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <strings.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include "struct.h"
 | 
			
		||||
#include "sdlscreen.h"
 | 
			
		||||
#include "global.h"
 | 
			
		||||
@ -811,6 +812,14 @@ int Max(int a,int b)
 | 
			
		||||
  return (a>b)?a:b;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Round number n to d decimal points */
 | 
			
		||||
double Fround(double n, unsigned d)
 | 
			
		||||
{
 | 
			
		||||
  double exp;
 | 
			
		||||
  exp = pow(10.0, d);
 | 
			
		||||
  return floor(n * exp + 0.5) / exp;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Fonction retournant le libellé d'une mode (ex: " 320x200")
 | 
			
		||||
char * Mode_label(int mode)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								misc.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								misc.h
									
									
									
									
									
								
							@ -150,9 +150,16 @@ unsigned long Memory_free(void);
 | 
			
		||||
 | 
			
		||||
#define Num2str(a,b,c) sprintf(b,"%*lu",c,(long)(a))
 | 
			
		||||
 | 
			
		||||
#define Dec2str(a,b,c) sprintf(b,"%.*f",c,(double)(a))
 | 
			
		||||
 | 
			
		||||
short Round(float value);
 | 
			
		||||
short Round_div_max(short numerator,short divisor);
 | 
			
		||||
 | 
			
		||||
/* round number n to d decimal points */
 | 
			
		||||
double Fround(double n, unsigned d);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int Min(int a,int b);
 | 
			
		||||
int Max(int a,int b);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								readline.c
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								readline.c
									
									
									
									
									
								
							@ -27,6 +27,7 @@
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
#include "const.h"
 | 
			
		||||
#include "struct.h"
 | 
			
		||||
@ -120,18 +121,19 @@ byte Readline(word x_pos,word y_pos,char * str,byte visible_size,byte input_type
 | 
			
		||||
    max_size = 255;
 | 
			
		||||
  else
 | 
			
		||||
    max_size = visible_size;
 | 
			
		||||
  return Readline_ex(x_pos,y_pos,str,visible_size,max_size,input_type);
 | 
			
		||||
  return Readline_ex(x_pos,y_pos,str,visible_size,max_size,input_type,0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/****************************************************************************
 | 
			
		||||
*           Enhanced super scanf deluxe pro plus giga mieux :-)             *
 | 
			
		||||
****************************************************************************/
 | 
			
		||||
byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_size, byte input_type)
 | 
			
		||||
byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_size, byte input_type, byte decimal_places)
 | 
			
		||||
// Paramètres:
 | 
			
		||||
//   x_pos, y_pos : Coordonnées de la saisie dans la fenêtre
 | 
			
		||||
//   str       : Chaîne recevant la saisie (et contenant éventuellement une valeur initiale)
 | 
			
		||||
//   max_size  : Nombre de caractères logeant dans la zone de saisie
 | 
			
		||||
//   input_type  : 0=Chaîne, 1=Nombre, 2=Nom de fichier
 | 
			
		||||
//   input_type  : 0=String, 1=Unsigned int, 2=Filename 3=Signed Double
 | 
			
		||||
//   decimal_places: Number of decimal places for a double
 | 
			
		||||
// Sortie:
 | 
			
		||||
//   0: Sortie par annulation (Esc.) / 1: sortie par acceptation (Return)
 | 
			
		||||
{
 | 
			
		||||
@ -149,6 +151,8 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
 | 
			
		||||
    str[0]='\0';
 | 
			
		||||
  else if (input_type==1)
 | 
			
		||||
    snprintf(str,10,"%d",atoi(str)); // On tasse la chaine à gauche
 | 
			
		||||
  else if (input_type==3)
 | 
			
		||||
    sprintf(str,"%.*f",decimal_places, atof(str)); // On tasse la chaine à gauche
 | 
			
		||||
 | 
			
		||||
  Wait_end_of_click();
 | 
			
		||||
  Keyboard_click_allowed = 0;
 | 
			
		||||
@ -286,6 +290,14 @@ byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_siz
 | 
			
		||||
              if ( (input_key>='0') && (input_key<='9') )
 | 
			
		||||
                is_authorized=1;
 | 
			
		||||
              break;
 | 
			
		||||
            case 3: // Decimal number
 | 
			
		||||
              if ( (input_key>='0') && (input_key<='9') )
 | 
			
		||||
                is_authorized=1;
 | 
			
		||||
              else if (input_key=='-' && position==0 && str[0]!='-')
 | 
			
		||||
                is_authorized=1;
 | 
			
		||||
              else if (input_key=='.')
 | 
			
		||||
                is_authorized=1;
 | 
			
		||||
              break;
 | 
			
		||||
            default : // Nom de fichier
 | 
			
		||||
              // On regarde si la touche est autorisée
 | 
			
		||||
              if ( Valid_character(input_key))
 | 
			
		||||
@ -344,6 +356,46 @@ affichage:
 | 
			
		||||
    }
 | 
			
		||||
    Print_in_window(x_pos+((max_size-size)<<3),y_pos,str,TEXT_COLOR,BACKGROUND_COLOR);
 | 
			
		||||
  }
 | 
			
		||||
  else if (input_type==3)
 | 
			
		||||
  {
 | 
			
		||||
    double value;
 | 
			
		||||
    int i;
 | 
			
		||||
    unsigned int str_length;
 | 
			
		||||
 | 
			
		||||
    value = atof(str);
 | 
			
		||||
 | 
			
		||||
    // Remove extraneous decimal places:
 | 
			
		||||
    // From number
 | 
			
		||||
    value = Fround(value, decimal_places);
 | 
			
		||||
 | 
			
		||||
    // From display
 | 
			
		||||
    sprintf(str,"%.*f",decimal_places, atof(str));
 | 
			
		||||
    // Remove extraneous zeroes
 | 
			
		||||
    /*
 | 
			
		||||
    for (i=0; i<size; i++)
 | 
			
		||||
    {
 | 
			
		||||
      if (str[i]=='.')
 | 
			
		||||
      {
 | 
			
		||||
        int j;
 | 
			
		||||
        
 | 
			
		||||
        for (j=0; i+j<size && j<decimal_places && str[i+j]!='.'; j++)
 | 
			
		||||
        {
 | 
			
		||||
          // advance
 | 
			
		||||
        }
 | 
			
		||||
        str[i+j]='\0';
 | 
			
		||||
        size = i+j;
 | 
			
		||||
        break; // end of process
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
    // Recompute updated size
 | 
			
		||||
    size = strlen(str);
 | 
			
		||||
    
 | 
			
		||||
    if (size<=visible_size)
 | 
			
		||||
      Print_in_window(x_pos+((visible_size-size)<<3),y_pos,str,TEXT_COLOR,BACKGROUND_COLOR);
 | 
			
		||||
    else
 | 
			
		||||
      Print_in_window_limited(x_pos,y_pos,str,visible_size,TEXT_COLOR,BACKGROUND_COLOR);
 | 
			
		||||
  }
 | 
			
		||||
  else
 | 
			
		||||
  {
 | 
			
		||||
    Print_in_window_limited(x_pos,y_pos,str,visible_size,TEXT_COLOR,BACKGROUND_COLOR);
 | 
			
		||||
 | 
			
		||||
@ -41,6 +41,7 @@ byte Readline(word x_pos,word y_pos,char * str,byte visible_size,byte input_type
 | 
			
		||||
/// @param str          The original string value (will be modified, unless user cancels.
 | 
			
		||||
/// @param visible_size Number of characters visible.
 | 
			
		||||
/// @param max_size     Number of characters editable.
 | 
			
		||||
/// @param input_type   0=string, 1=number, 2=filename (255 editable characters)
 | 
			
		||||
/// @param input_type   0=string, 1=integer, 2=filename (255 editable characters) 3=decimal
 | 
			
		||||
/// @param decimal_places Number of decimal places (used only with decimal type)
 | 
			
		||||
/// @return             0 if user cancelled (esc), 1 if accepted (return)
 | 
			
		||||
byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_size, byte input_type);
 | 
			
		||||
byte Readline_ex(word x_pos,word y_pos,char * str,byte visible_size,byte max_size, byte input_type, byte decimal_places);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										31
									
								
								scripts/settings.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								scripts/settings.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
			
		||||
-- Test LUA inputbox
 | 
			
		||||
--  this script only resizes the brush
 | 
			
		||||
 | 
			
		||||
w, h = getbrushsize()
 | 
			
		||||
--[[
 | 
			
		||||
messagebox(
 | 
			
		||||
  "Forecolor: " .. getforecolor() .. "\n" ..
 | 
			
		||||
  "Backcolor: " .. getbackcolor() .. "\n" ..
 | 
			
		||||
  "Transparent color: " .. gettranscolor() .. "\n" ..
 | 
			
		||||
  "Brush dimensions: " .. w .. "x" .. h
 | 
			
		||||
)
 | 
			
		||||
]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ok, w, h = inputbox("Modify brush",
 | 
			
		||||
  "Width",  w, -100.0,100.0, 0,
 | 
			
		||||
  "Height", h, -200.0,100.0, 0,
 | 
			
		||||
  "X Flip", 0, 0, 1,  0,
 | 
			
		||||
  "Y Flip", 0, 0, 1,  0
 | 
			
		||||
);
 | 
			
		||||
if ok == true then
 | 
			
		||||
  setbrushsize(w,h)
 | 
			
		||||
  for y = 0, h-1, 1 do
 | 
			
		||||
    for x = 0, w-1, 1 do
 | 
			
		||||
      putbrushpixel(x,y,1);
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user