###################################
### DM2_w25 # AGruber@tugraz.at ###
### pixel_2_vector demo         ###
###################################

##############################
import rhinoscriptsyntax as rs
import random, time, sys   ###
sys.path.append("P:/WWW/lukschme/dm2/")     ###
import DM_lib as dm        ### dm.reload_lib(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=1)        # 2 square; 3 round
dm.printDisplay(False)                                      # nomen est omen
rs.EnableRedraw(False)
dm.eA()
rs.Redraw()

if 1:
    grayScale = 0
    makeEleva = 5   ### == ~boolean & factor
    makeCurve = 0
    intervall = 3
    img_name = "wbstudkart.jpg"
    #img_name = "P:/ue_07/michael.jpeg"
    #img_name = "P:/ue_07/urs.jpg"
    #img_name = "diag.jpg"
    #img_name = "diag.png"


    
    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:
            dm.zA()
if 0:
    #dm.eA()
    for coords in allCoords:
        rs.AddCurve( coords, 1)
