#########################
#-*- coding: utf-8 -*-
###################################
### DM2_w25 # AGruber@tugraz.at ###
### DEMO       SWAN      
###################################

##############################
import rhinoscriptsyntax as rs
import random, time, sys   ###
sys.path.append("P:/")     ###
sys.path.append("P:/WWW/XXX/dm2/")
import DM_lib as dm        ### 
dm.reload_lib(dm)
##############################      

############################## hier passenden pfad eintragen ! 
path_for_lists = "P:/ue_11/data_ag/"
sys.path.append( path_for_lists ) ###                                            
############################## hier passenden pfad eintragen !

rs.UnitSystem(4)                                            # meters = 4, cm = 3 etc
rs.ShowGrid(None, False)                                    # grid > False = off
rs.ShowGridAxes(None, True)                                 # y/y/z axen display > False/True = off/on
rs.Command("cplane w t enter", False)				        # cPlane World Top
#rs.ViewDisplayMode(rs.CurrentView(), "pen")

dm.PointRadius(displayModeX=1001, rad=3, styl=3)               # 0 => wireframe | info: (.., verbose=1)            # 2 => rendered  | info: (.., verbose=1)
dm.printDisplay(state=False, scale=1000)                       # nomen est omen
rs.EnableRedraw(False)
#rs.AppearanceColor(0, [0,100,200])

  

###   EXPORT coords: just once !

if 1: ######### EXPORT
    dem_coords = dm.getSurfacePoints(rs.ObjectsByName("SRFX")[0])
    dm.exportCoordLists([dem_coords], exportedListName='dem_coords', path=path_for_lists, fileName='dem_coords_X')

###   IMPORT coords 
dm.setTime()
import dem_coords_original as dco #
dm.reload_lib( dco )
dem_coords_original = dco.dem_coords[0]

print ("*** {} coords imported in {}s".format(len(dem_coords_original), dm.getTime()))

### RESET / clear all
dm.newEmptyLayer("SRF", [150,250,150])
rs.Redraw()

### RESET surface
#dm.setSurfacePoints(dem, dem_coords)
#rs.ZoomExtents()
#rs.Redraw()
#rs.Sleep(1000)

srfX = dm.makeSrf_fromCoords (dem_coords_original, deg = 1)
rs.ObjectName(srfX, "SRFX")

if 0:
    for i in range(10000,30000):
        cor = dem_coords_original[i]
        cor[2] = 150
    dm.setSurfacePoints(srfX, dem_coords_original)
    
    dem_coordsX = dm.getSurfacePoints(srfX)
    dm.exportCoordLists([dem_coordsX], exportedListName='dem_coordsX', path=path_for_lists, fileName='dem_coords_X')
    
    
    pixxels_malevich = dm.getPixels(path_for_lists+"malevich_400x400.jpg", steps_x=2, steps_y=2, verbose=1) 
    pixxels_grosse   = dm.getPixels(path_for_lists+"grosse_400x400.jpg", steps_x=2, steps_y=2, verbose=1) 
    
    pixxels_m = []
    [pixxels_m.extend(RGBList) for RGBList in pixxels_malevich]   ### alle RGBs in 1 list
    pixxels_g = []
    [pixxels_g.extend(RGBList) for RGBList in pixxels_grosse]                    ### alle RGBs in 1 list
    
    ### ZIP
    dm.reload_lib( dco )
    dem_coords_original = dco.dem_coords[0]
    
    coords_pixxels_m_list = zip( dem_coordsX, pixxels_m )
    coords_pixxels_g_list = zip( dem_coords_original, pixxels_g )
    print "lenx =", len(coords_pixxels_g_list)
    
    for i in range(10000,30000):
        cor_RGB = coords_pixxels_m_list[i]
        cor = cor_RGB[0]
        RGB = cor_RGB[1]
        rs.ObjectColor( rs.AddPoint( cor ), RGB )
    rs.Redraw()
    
    indices = range(10000,30000)
    random.shuffle(indices)
    
    for i in indices:
        cor_RGB = coords_pixxels_g_list[i]
        cor = cor_RGB[0]
        RGB = cor_RGB[1]
        rs.ObjectColor( rs.AddPoint( cor ), RGB )
        if i%1000==0:
            rs.Redraw()
        
########## EOS / EndOfScript
rs.EnableRedraw(True)      ### 4_the_MACs
#dm.eDup(1)                ### delete duplicate objects 
dm.printDisplay(state=True, scale=1000)
#dm.zA( 0.9 )
dm.newEmptyLayer("Default")
print "### done"
########## EOS / EndOfScript