###################################
### DM2_w23 # AGruber@tugraz.at ###
### pixel_2_vector demo         ###
###################################

##############################
import rhinoscriptsyntax as rs      ###
import random, time, sys            ###
sys.path.append("P:/")              ### add LW P:/ to rhino's default search path AND
sys.path.append("P:/WWW/flobber27/dm2")     # path for library !!
sys.path.append("P:/ue_07/")        ### add YOUR LW P:/WWW/user/ to rhino's default search path ...
import DM_lib as dm                 ### ... thus DM2_lib.py can be found !
##############################      reload (dm)

rs.ViewDisplayMode(view=None, mode="wireframe")
rs.ShowGrid(view=None, show=0)
rs.Command("cplane w t enter", 0)						# cPlane World Top
dm.PointRadius(displayModeX=1001, rad=3, styl=2)        # 2 square; 3 round
dm.printDisplay(0)                                      # nomen est omen
rs.EnableRedraw(0)
dm.eA()
rs.Redraw()

if 1:
    grayScale = 0
    makeEleva = 5
    makeCurve = 2           # 0 heisst soviel wie -> points
    intervall = 2
    #img_name = "P:/WWW/flobber27/dm2/ue_07/alice.jpg"
    img_name = "P:/WWW/flobber27/dm2/ue_07/urs.jpg"
    #img_name = "P:/ue_07/michael.jpeg"
    #img_name = "P:/ue_07/urs.jpg"
    #img_name = "diag.png"
    #img_name = "fabian.jpg"
    #img_name = "jasmin.jpg"

    
    img_path = img_name
    
    ########
    pixels = dm.getPixels(img_path, steps_x=intervall, steps_y=intervall)
    ########
    
    
    #print pixels[0]
    ####################################
    
    ### make 3D_grafik from pixels_lists:
    allCoords = []
    for y,row in enumerate(pixels[0:]): ### enumerate = generate counter 0,1,2,3,4,5...
        coords = []
        for x,col in enumerate(row[0:]):
            dm.esc()
            avg = int( (col[0] + col[1] + col[2])/3 ) ### average, for gray_value
            if grayScale:
                col = [avg, avg, avg]
            cor = [x, y, (255-avg)*0.01*makeEleva]
            coords.append( cor )
            if not makeCurve:
                rs.ObjectColor( rs.AddPoint( cor ), col)
        if makeCurve:
            col = dm.pntCentroid(row)
            crv = rs.AddCurve( coords, makeCurve)
            rs.ObjectColor( crv, col)

        allCoords.append( coords )
        if y%15==0:
            rs.ZoomExtents()
            rs.Redraw()
if 0:
    for coords in allCoords:
        rs.AddCurve( coords, 1)
