#  Copyright (c) 2024 Bentley Systems, Incorporated. All rights reserved.
### extends 'class_empty.py'
### block ClassImports
# NOTICE: Do not edit anything here, it is generated code
import warnings
from . import gxapi_cy
from geosoft.gxapi import GXContext, float_ref, int_ref, str_ref
from .GXST import GXST
from .GXVV import GXVV
### endblock ClassImports
### block Header
# NOTICE: The code generator will not replace the code in this block
### endblock Header
### block ClassImplementation
# NOTICE: Do not edit anything here, it is generated code
[docs]
class GXDCOL(gxapi_cy.WrapDCOL):
    """
    GXDCOL class.
    Object to interface with 2D map and 3D view objects that supports colour tool editing.
    """
[docs]
    def __init__(self, handle=0):
        super(GXDCOL, self).__init__(GXContext._get_tls_geo(), handle) 
[docs]
    @classmethod
    def null(cls):
        """
        A null (undefined) instance of `GXDCOL <geosoft.gxapi.GXDCOL>`
        
        :returns: A null `GXDCOL <geosoft.gxapi.GXDCOL>`
        :rtype:   GXDCOL
        """
        return GXDCOL() 
[docs]
    def is_null(self):
        """
        Check if this is a null (undefined) instance
        
        :returns: True if this is a null (undefined) instance, False otherwise.
        :rtype:   bool
        """
        return self._internal_handle() == 0 
# Miscellaneous
[docs]
    def number_of_layers(self):
        """
        
        Get the number of layers.
        
        :returns:     The number of layers (often just one).
        :rtype:       int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val = self._number_of_layers()
        return ret_val 
[docs]
    def get_type(self):
        """
        
        Get a layer's type
        
        :returns:     :ref:`DCOL_TYPE`
        :rtype:       int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val = self._get_type()
        return ret_val 
[docs]
    def get_layer_info(self, index, itr, layer_name):
        """
        
        Get a layer's information
        
        :param index:       Index of layer
        :param itr:         `GXITR <geosoft.gxapi.GXITR>` Handle
        :param layer_name:  Name returned
        :type  index:       int
        :type  itr:         GXITR
        :type  layer_name:  str_ref
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        layer_name.value = self._get_layer_info(index, itr, layer_name.value.encode()) 
        
[docs]
    def get_layer_itr(self, index, itr):
        """
        
        Get a layer's ITR
        
        :param index:  Index of layer
        :param itr:    `GXITR <geosoft.gxapi.GXITR>` Handle
        :type  index:  int
        :type  itr:    GXITR
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._get_layer_itr(index, itr) 
        
[docs]
    def set_layer_itr(self, index, itr, redrawMap):
        """
        
        Set a layer's ITR
        
        :param index:      Index of layer
        :param itr:        `GXITR <geosoft.gxapi.GXITR>` Handle
        :param redrawMap:  Force redraw of map (0: No, 1: Yes)?
        :type  index:      int
        :type  itr:        GXITR
        :type  redrawMap:  int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._set_layer_itr(index, itr, redrawMap) 
        
[docs]
    def get_layer_statistics(self, index):
        """
        
        Get a `GXST <geosoft.gxapi.GXST>` filled with layer statistics
        
        :param index:  Index of layer
        :type  index:  int
        :returns:      `GXST <geosoft.gxapi.GXST>` object
        :rtype:        GXST
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val = self._get_layer_statistics(index)
        return GXST(ret_val) 
[docs]
    def get_layer_histogram(self, index, incr, min):
        """
        
        Get a `GXVV <geosoft.gxapi.GXVV>` filled with histogram bin counts for each zone of the ITR
        
        :param index:  Index of layer
        :param incr:   width of bin increment
        :param min:    Min (value at start of 2nd bin)
        :type  index:  int
        :type  incr:   float_ref
        :type  min:    float_ref
        :returns:      `GXVV <geosoft.gxapi.GXVV>` object
        :rtype:        GXVV
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val, incr.value, min.value = self._get_layer_histogram(index, incr.value, min.value)
        return GXVV(ret_val) 
[docs]
    def save_layer_itr(self, index):
        """
        
        Save the layer's ITR to a file. A dialog prompts for the file name.
        
        :param index:  Index of layer
        :type  index:  int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._save_layer_itr(index) 
        
[docs]
    def get_brightness_type(self):
        """
        
        Is brightness set separately by layer and by object or just by object?
        
        :returns:     BRIGHTNESS_ALL - Set brightness for the object as a whole only
                      BRIGHTNESS_ALL_AND_LAYERS - Set brightness either for the object as a whole or by layer
        :rtype:       int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        **Note:** For some objects (like AGG) brightness can be set for each layer, or for the object as a whole, while in others
        (like CSYMB) it can be set only for the object as a whole.
        """
        
        ret_val = self._get_brightness_type()
        return ret_val 
[docs]
    def set_brightness(self, brightness, layerSelection, layer):
        """
        
        Set the brightness of a single layer, or all the layers
        
        :param brightness:      Brightness value (-1.0 (black) <= brightness <= 1.0 (white))
        :param layerSelection:  :ref:`BRIGHT`
        :param layer:           layer index (required for BRIGHT_LAYER
        :type  brightness:      float
        :type  layerSelection:  int
        :type  layer:           int
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._set_brightness(brightness, layerSelection, layer) 
        
[docs]
    def get_brightness(self, layerSelection, layer):
        """
        
        Get the brightness of a single layer, or all the layers
        
        :param layerSelection:  :ref:`BRIGHT`
        :param layer:           layer index (required for BRIGHT_LAYER
        :type  layerSelection:  int
        :type  layer:           int
        :rtype:                 float
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val = self._get_brightness(layerSelection, layer)
        return ret_val 
[docs]
    def set_transparency(self, transparency):
        """
        
        Set the transparency. This is set for the entire map group.
        
        :param transparency:  Transparency value (1.0 - Opaque, 0.0 - Transparent)
        :type  transparency:  float
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._set_transparency(transparency) 
        
[docs]
    def get_transparency(self):
        """
        
        Get the transparency. This is returned for the entire map group.
        
        :rtype:       float
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        ret_val = self._get_transparency()
        return ret_val 
[docs]
    def reset(self):
        """
        
        Reset the AGG back to its initial state. Same as cancelling out of the colour tool and restarting; all layers are reset.
        
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._reset() 
        
[docs]
    def end(self, apply_changes):
        """
        
        TODO
        
        :param apply_changes:  Apply changes to map.
        :type  apply_changes:  bool
        .. versionadded:: 2021.2
        **License:** `Geosoft Open License <https://geosoftgxdev.atlassian.net/wiki/spaces/GD/pages/2359406/License#License-open-lic>`_
        **Limitations:** May not be available while executing a command line program.
        """
        
        self._end(apply_changes) 
 
        
### endblock ClassImplementation
### block ClassExtend
# NOTICE: The code generator will not replace the code in this block
### endblock ClassExtend
### block Footer
# NOTICE: The code generator will not replace the code in this block
### endblock Footer