view TaskManager/Test/test_render/task/DrawSpan.h @ 386:6113af8f183b

MemHash...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 06 Aug 2009 19:31:51 +0900
parents eab18aa0c7f6
children 136ff78c9e74
line wrap: on
line source

#ifndef INCLUDED_TASK_DRAW_SPAN
#define INCLUDED_TASK_DRAW_SPAN

#include "SchedTask.h"
#include "Tapestry.h"
#include "SpanPack.h"
#if !USE_MEMHASH
#include "TileHash.h"
#endif

class DrawSpan : public SchedTask {
public:
    SchedConstructor(DrawSpan);

    int *linebuf;
    float *zRow;
#if !USE_MEMHASH
    TileHashPtr hash;
#endif
    TileListPtr tileList;
    int doneWrite;

    ~DrawSpan(void);

    int run(void *rbuf, void *wbuf);

    int* linebuf_init(int width, int height, int rgb);
    float* zRow_init(int width, int height);
    TilePtr set_rgb(memaddr addr, int wait_tag);
    void set_rgbs(memaddr addr, uint32 *max_addr, int wait_tag);
    uint32 get_rgb(int tx, int ty, TilePtr tile);
    TilePtr isAvailableTile(memaddr addr);
    memaddr getTile(int tx, int ty, int tw, memaddr tex_addr_top);
    int getTexBlock(int tx, int ty, int twidth);
    void writebuffer(unsigned int display, int width, int height,
                     int screen_width);
    void updateBuffer(float zpos, int rangex, int x, int y,
                      int tex_x, int tex_y, float normal_x, float nomral_x, float normal_z, TilePtr tile);


    void reboot(SpanPackPtr spack, int cur_span_x);

    int drawDot1(SpanPtr span, int startx, int endx, int wait_tag);
    void drawDot2(SpanPtr span, int startx, int endx, int js, int wait_tag);
    int drawLine1(SpanPtr span, int startx, int endx, int wait_tag);
    void drawLine2(SpanPtr span, int startx, int endx, int js, int wait_tag);
    int infinity_light_calc(int color,float normal_x, float normal_y, float normal_z);
};

typedef struct {
    uint32 display;
    int screen_width;
    int rangex_start;
    int rangex_end;
    int rangey;
} DrawSpanArg, *DrawSpanArgPtr;

#endif