------------------------------------------------------------------ -- -- NAME: WSD_INITIALISE_INPUT_MB - BODY -- DISCREPANCY REPORTS: ------------------------------------------------------------------ -- file : TEK_INIT_INPUT_MB_B.ADA -- level : MB,MC,0B,0C,1B,1C,2B,2C with GKS_ERRORS; package body WSD_INITIALISE_INPUT_MB is -- This resource package initializes the workstation state list that -- it was passed with the values chosen by the application programmer. procedure INITIALISE_LOCATOR (WS_SL : in out WS_STATE_LIST_TYPES.WS_STATE_LIST_PTR; WS_DT : in WS_DESCRIPTION_TABLE_TYPES .WS_DESCRIPTION_TBL; DEVICE : in LOCATOR_DEVICE_NUMBER; INITIAL_TRANSFORMATION : in TRANSFORMATION_NUMBER; INITIAL_POSITION : in WC.POINT; ECHO_AREA : in DC.RECTANGLE_LIMITS; DATA_RECORD : in INTERNAL_DATA_RECORDS.LOCATOR_DATA_RECORD; ERROR_INDICATOR : out ERROR_NUMBER) is -- This procedure sets the appropriate locator device from the -- list of locator devices in the workstation state list with the -- values passed in. -- -- The following parameters are used in this procedure: -- WS_SL - The workstation state list in which to change the values. -- WS_DT - The workstation description table for the specifed -- workstation. Used for error checks. -- DEVICE - Used to determine which device to set from the list. -- INITIAL_TRANSFORMATION - The transformation used to transform the -- initial point from WC to NDC. -- INITIAL_POSTION - The initial postion the locator starts at. -- ECHO_AREA - The echo area in DC -- DATA_RECORD - The Data Record used to determine how the input prompt -- and echo appears. -- ERROR_INDICATOR - An error indicator used to log errors. begin -- Check that the specified device is on the workstation. if NATURAL(DEVICE) not in WS_SL.LIST_OF_LOCATOR_DEVICES'range then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_ON_WS; -- Check that the specified device is in the REQUEST MODE. elsif WS_SL.LIST_OF_LOCATOR_DEVICES (NATURAL(DEVICE)) .OPERATING_MODE /= REQUEST_MODE then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_REQUEST; -- Check that the requested ECHO AREA is on the display space. elsif ECHO_AREA.XMIN < 0.0 or else ECHO_AREA.YMIN < 0.0 or else ECHO_AREA.XMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.XAXIS) or else ECHO_AREA.YMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.YAXIS) then ERROR_INDICATOR := GKS_ERRORS.ECHO_AREA_OUT_OF_DISPLAY; -- Check that the requested prompt and echo type is supported on the -- specified workstation. elsif not LOCATOR_PROMPT_ECHO_TYPES.IS_IN_LIST (DATA_RECORD.PROMPT_ECHO_TYPE, WS_DT.LIST_OF_LOCATOR_DEVICES (NATURAL(DEVICE)) .LIST_AVAL_PROMPT_ECHO_TYPES) then ERROR_INDICATOR := GKS_ERRORS.NO_PROMPT_AND_ECHO_ON_WS; else -- No errors occurred. Set the requested values. ERROR_INDICATOR := GKS_ERRORS.SUCCESSFUL; WS_SL.LIST_OF_LOCATOR_DEVICES (NATURAL(DEVICE)) := (OPERATING_MODE => WS_SL.LIST_OF_LOCATOR_DEVICES (NATURAL(DEVICE)).OPERATING_MODE, ECHO_SWITCH => WS_SL.LIST_OF_LOCATOR_DEVICES (NATURAL(DEVICE)).ECHO_SWITCH, INITIAL_NORM_XFORM_NUM => INITIAL_TRANSFORMATION, INITIAL_LOCATOR_POSITION => INITIAL_POSITION, ECHO_AREA => ECHO_AREA, LOCATOR_DATA_RECORD => DATA_RECORD); end if; end INITIALISE_LOCATOR; procedure INITIALISE_STROKE (WS_SL : in out WS_STATE_LIST_TYPES.WS_STATE_LIST_PTR; WS_DT : in WS_DESCRIPTION_TABLE_TYPES .WS_DESCRIPTION_TBL; DEVICE : in STROKE_DEVICE_NUMBER; INITIAL_TRANSFORMATION : in TRANSFORMATION_NUMBER; INITIAL_STROKE : in CGI.ACCESS_WC_POINT_ARRAY_TYPE; ECHO_AREA : in DC.RECTANGLE_LIMITS; DATA_RECORD : in out INTERNAL_DATA_RECORDS.STROKE_DATA_RECORD; ERROR_INDICATOR: out ERROR_NUMBER) is -- This procedure sets the appropriate stroke device from the -- list of stroke devices in the workstation state list with the -- values passed in. -- -- The following parameters are used in this procedure: -- WS_SL - The workstation state list in which to change the values. -- WS_DT - The workstation description table for the specified -- workstation. Used for error checking. -- DEVICE - Used to determine which device from the list to set. -- INITIAL_TRANSFORMATION - The transformation used to transfrom the -- initial points from WC to NDC. -- INITIAL_STROKE - An initial stroke to initialize the buffer. -- ECHO_AREA - The echo area in DC -- DATA_RECORD - The Data Record used to determine how the input prompt -- and echo appears. -- ERROR_INDICATOR - An error indicator used to log errors. begin -- Check that the specified device is on the workstation. if NATURAL(DEVICE) not in WS_SL.LIST_OF_STROKE_DEVICES'range then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_ON_WS; -- Check that the specified device is in the REQUEST MODE. elsif WS_SL.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)) .OPERATING_MODE /= REQUEST_MODE then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_REQUEST; -- Check that the requested ECHO AREA is on the display space. elsif ECHO_AREA.XMIN < 0.0 or else ECHO_AREA.YMIN < 0.0 or else ECHO_AREA.XMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.XAXIS) or else ECHO_AREA.YMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.YAXIS) then ERROR_INDICATOR := GKS_ERRORS.ECHO_AREA_OUT_OF_DISPLAY; -- Check that the requested prompt and echo type is supported on the -- specified workstation. elsif not STROKE_PROMPT_ECHO_TYPES.IS_IN_LIST (DATA_RECORD.PROMPT_ECHO_TYPE, WS_DT.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)) .LIST_AVAL_PROMPT_ECHO_TYPES) then ERROR_INDICATOR := GKS_ERRORS.NO_PROMPT_AND_ECHO_ON_WS; else -- No errors occurred. Set the requested values. ERROR_INDICATOR := GKS_ERRORS.SUCCESSFUL; -- Check if the requested buffer size exceeds the maximum -- allowed. If it does, the maximum allowed is set. if DATA_RECORD.BUFFER_SIZE > WS_DT.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)).MAX_INPUT_BUFFER_SIZE then DATA_RECORD.BUFFER_SIZE := WS_DT.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)).MAX_INPUT_BUFFER_SIZE; end if; -- Check that the size of the requested stroke does not exceed -- the buffer size. if INITIAL_STROKE'length > DATA_RECORD.BUFFER_SIZE then ERROR_INDICATOR := GKS_ERRORS.EXCEEDED_INITIAL_STROKE_POINTS; end if; WS_SL.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)) := (OPERATING_MODE => WS_SL.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)).OPERATING_MODE, ECHO_SWITCH => WS_SL.LIST_OF_STROKE_DEVICES (NATURAL(DEVICE)).ECHO_SWITCH, INITIAL_NORM_XFORM_NUM => INITIAL_TRANSFORMATION, INITIAL_NUM_OF_POINTS => INITIAL_STROKE'length, INITIAL_POINTS_IN_STROKE => (LENGTH => INITIAL_STROKE'length, POINTS => INITIAL_STROKE.all), ECHO_AREA => ECHO_AREA, STROKE_DATA_RECORD => DATA_RECORD); end if; end INITIALISE_STROKE; procedure INITIALISE_VALUATOR (WS_SL : in out WS_STATE_LIST_TYPES.WS_STATE_LIST_PTR; WS_DT : in WS_DESCRIPTION_TABLE_TYPES.WS_DESCRIPTION_TBL; DEVICE : in VALUATOR_DEVICE_NUMBER; INITIAL_VALUE : in VALUATOR_INPUT_VALUE; ECHO_AREA : in DC.RECTANGLE_LIMITS; DATA_RECORD : in INTERNAL_DATA_RECORDS.VALUATOR_DATA_RECORD; ERROR_INDICATOR: out ERROR_NUMBER) is -- This procedure sets the appropriate valuator device from the -- list of valuator devices in the workstation state list with the -- values passed in. -- -- The following parameters are used in this procedure: -- WS_SL - The workstation state list in which to change the values. -- WS_DT - The workstation description table for the specified -- workstation. Used for error checking. -- DEVICE - Used to determine which device to set from the list. -- INITIAL_VALUE - An initial value to initialize the device. -- ECHO_AREA - The echo area in DC -- DATA_RECORD - The Data Record used to determine how the input prompt -- and echo appear. -- ERROR_INDICATOR - An error indicator used to log errors. begin -- Check that the specified device is on the workstation. if NATURAL(DEVICE) not in WS_SL.LIST_OF_VALUATOR_DEVICES'range then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_ON_WS; -- Check that the specified device is in the REQUEST MODE. elsif WS_SL.LIST_OF_VALUATOR_DEVICES (NATURAL(DEVICE)) .OPERATING_MODE /= REQUEST_MODE then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_REQUEST; -- Check that the requested ECHO AREA is on the display space. elsif ECHO_AREA.XMIN < 0.0 or else ECHO_AREA.YMIN < 0.0 or else ECHO_AREA.XMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.XAXIS) or else ECHO_AREA.YMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.YAXIS) then ERROR_INDICATOR := GKS_ERRORS.ECHO_AREA_OUT_OF_DISPLAY; -- Check that the requested prompt and echo type is supported on the -- specified workstation. elsif not VALUATOR_PROMPT_ECHO_TYPES.IS_IN_LIST (DATA_RECORD.PROMPT_ECHO_TYPE, WS_DT.LIST_OF_VALUATOR_DEVICES (NATURAL(DEVICE)) .LIST_AVAL_PROMPT_ECHO_TYPES) then ERROR_INDICATOR := GKS_ERRORS.NO_PROMPT_AND_ECHO_ON_WS; else -- If there are no errors detected, set the error indicator equal -- to zero and set the requested values. ERROR_INDICATOR := GKS_ERRORS.SUCCESSFUL; WS_SL.LIST_OF_VALUATOR_DEVICES (NATURAL(DEVICE)) := (OPERATING_MODE => WS_SL.LIST_OF_VALUATOR_DEVICES (NATURAL(DEVICE)).OPERATING_MODE, ECHO_SWITCH => WS_SL.LIST_OF_VALUATOR_DEVICES (NATURAL(DEVICE)).ECHO_SWITCH, INITIAL_VALUE => INITIAL_VALUE, ECHO_AREA => ECHO_AREA, VALUATOR_DATA_RECORD => DATA_RECORD); end if; end INITIALISE_VALUATOR; procedure INITIALISE_CHOICE (WS_SL : in out WS_STATE_LIST_TYPES.WS_STATE_LIST_PTR; WS_DT : in WS_DESCRIPTION_TABLE_TYPES.WS_DESCRIPTION_TBL; DEVICE : in CHOICE_DEVICE_NUMBER; STATUS : in CHOICE_STATUS; INITIAL_CHOICE : in CHOICE_VALUE; ECHO_AREA : in DC.RECTANGLE_LIMITS; DATA_RECORD : in INTERNAL_DATA_RECORDS.CHOICE_DATA_RECORD; ERROR_INDICATOR: out ERROR_NUMBER) is -- This procedure sets the appropriate choice device from the -- list of choice devices in the workstation state list with the -- values passed in. -- -- The following parameters are used in this procedure: -- WS_SL - The workstation state list in which to change the values. -- WS_DT - The workstation description table for the specified -- workstation. Used for error checking. -- DEVICE - Used to determine which device to set from the list. -- STATUS - Used to indicate if a choice was made. -- INITIAL_CHOICE - An initial choice to initialize the buffer. -- ECHO_AREA - The echo area in DC -- DATA_RECORD - The Data Record used to determine how the input prompt -- and echo appear. -- ERROR_INDICATOR - An error indicator used to log errors. begin -- Check that the specified device is on the workstation. if NATURAL(DEVICE) not in WS_SL.LIST_OF_CHOICE_DEVICES'range then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_ON_WS; -- Check that the specified device is in the REQUEST MODE. elsif WS_SL.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)) .OPERATING_MODE /= REQUEST_MODE then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_REQUEST; -- Check that the requested ECHO AREA is on the display space. elsif ECHO_AREA.XMIN < 0.0 or else ECHO_AREA.YMIN < 0.0 or else ECHO_AREA.XMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.XAXIS) or else ECHO_AREA.YMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.YAXIS) then ERROR_INDICATOR := GKS_ERRORS.ECHO_AREA_OUT_OF_DISPLAY; -- Check that the requested prompt and echo type is supported on the -- specified workstation. elsif not CHOICE_PROMPT_ECHO_TYPES.IS_IN_LIST (DATA_RECORD.PROMPT_ECHO_TYPE, WS_DT.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)) .LIST_AVAL_PROMPT_ECHO_TYPES) then ERROR_INDICATOR := GKS_ERRORS.NO_PROMPT_AND_ECHO_ON_WS; elsif INTEGER(INITIAL_CHOICE) > WS_DT.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)) .MAX_NUM_CHOICE_ALTERNATIVES then ERROR_INDICATOR := GKS_ERRORS.INVALID_INITIAL_VALUE; else ERROR_INDICATOR := GKS_ERRORS.SUCCESSFUL; WS_SL.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)) := (OPERATING_MODE => WS_SL.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)).OPERATING_MODE, ECHO_SWITCH => WS_SL.LIST_OF_CHOICE_DEVICES (NATURAL(DEVICE)).ECHO_SWITCH, INITIAL_STATUS => STATUS, INITIAL_CHOICE_NUMBER => INITIAL_CHOICE, ECHO_AREA => ECHO_AREA, CHOICE_DATA_RECORD => DATA_RECORD); end if; end; procedure INITIALISE_STRING (WS_SL : in out WS_STATE_LIST_TYPES.WS_STATE_LIST_PTR; WS_DT : in WS_DESCRIPTION_TABLE_TYPES.WS_DESCRIPTION_TBL; DEVICE : in STRING_DEVICE_NUMBER; INITIAL_STRING : in CGI.ACCESS_STRING_TYPE; ECHO_AREA : in DC.RECTANGLE_LIMITS; DATA_RECORD : in INTERNAL_DATA_RECORDS.STRING_DATA_RECORD; ERROR_INDICATOR: out ERROR_NUMBER) is -- This procedure sets the appropriate string device from the -- list of string devices in the workstation state list with the -- values passed in. -- -- The following parameters are used in this procedure: -- WS_SL - The workstation state list in which to change the values. -- WS_DT - The workstation description table for the specified -- workstation. Used to check for errors. -- DEVICE - Used to determine which device to set from the list. -- INITIAL_STRING - An initial string to initialize the buffer. -- ECHO_AREA - The echo area in DC -- DATA_RECORD - The Data Record used to determine how the input prompt -- and echo appear. -- ERROR_INDICATOR - An error indicator used to log errors. begin -- Check that the specified device is on the workstation. if NATURAL(DEVICE) not in WS_SL.LIST_OF_STRING_DEVICES'range then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_ON_WS; -- Check that the specified device is in the REQUEST MODE. elsif WS_SL.LIST_OF_STRING_DEVICES (NATURAL(DEVICE)) .OPERATING_MODE /= REQUEST_MODE then ERROR_INDICATOR := GKS_ERRORS.INPUT_DEVICE_NOT_REQUEST; -- Check that the requested ECHO AREA is on the display space. elsif ECHO_AREA.XMIN < 0.0 or else ECHO_AREA.YMIN < 0.0 or else ECHO_AREA.XMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.XAXIS) or else ECHO_AREA.YMAX > DC_TYPE(WS_DT .MAX_DISPLAY_SURFACE_DC_UNITS.YAXIS) then ERROR_INDICATOR := GKS_ERRORS.ECHO_AREA_OUT_OF_DISPLAY; -- Check that the requested prompt and echo type is supported on the -- specified workstation. elsif not STRING_PROMPT_ECHO_TYPES.IS_IN_LIST (DATA_RECORD.PROMPT_ECHO_TYPE, WS_DT.LIST_OF_STRING_DEVICES (NATURAL(DEVICE)) .LIST_AVAL_PROMPT_ECHO_TYPES) then ERROR_INDICATOR := GKS_ERRORS.NO_PROMPT_AND_ECHO_ON_WS; else -- If no errors are detected, set workstation state list to the -- requested values. ERROR_INDICATOR := GKS_ERRORS.SUCCESSFUL; WS_SL.LIST_OF_STRING_DEVICES (NATURAL(DEVICE)) := (OPERATING_MODE => WS_SL.LIST_OF_STRING_DEVICES (NATURAL(DEVICE)).OPERATING_MODE, ECHO_SWITCH => WS_SL.LIST_OF_STRING_DEVICES (NATURAL(DEVICE)).ECHO_SWITCH, INITIAL_STRING => (LENGTH => INITIAL_STRING'length, CONTENTS => INITIAL_STRING.all), ECHO_AREA => ECHO_AREA, STRING_DATA_RECORD => DATA_RECORD); end if; end INITIALISE_STRING; end WSD_INITIALISE_INPUT_MB;