Subversion Repositories Kolibri OS

Rev

Rev 877 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 877 Rev 878
Line 68... Line 68...
68
}
68
}
69
 
69
 
Line 70... Line 70...
70
int DrawRect(draw_t* draw)
70
int DrawRect(draw_t* draw)
71
{
71
{
72
     int x0, y0, x1, y1;
72
     int x0, y0, x1, y1, xend, yend;
Line 73... Line 73...
73
 
73
 
74
     local_pixmap_t *dstpixmap;
74
     local_pixmap_t *dstpixmap;
Line 75... Line 75...
75
     clip_t dst_clip;
75
     clip_t dst_clip;
Line 76... Line 76...
76
 
76
 
77
     dstpixmap = (draw->dstpix == (void*)-1) ? &scr_pixmap : draw->dstpix ;
77
     dstpixmap = (draw->dstpix == (void*)-1) ? &scr_pixmap : draw->dstpix ;
Line 78... Line 78...
78
 
78
 
79
     x0 = draw->x0;
79
     x0 = draw->x0;
Line 80... Line 80...
80
     y0 = draw->y0;
80
     y0 = draw->y0;
81
 
81
 
82
     x1 = x0+draw->w-1;
82
     x1 = xend = x0 + draw->w - 1;
83
     y1 = y0+draw->h-1;
83
     y1 = yend = y0 + draw->h - 1;
Line 117... Line 117...
117
 
117
 
Line 118... Line 118...
118
        OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->color);
118
        OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->color);
119
        OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM);
119
        OUTREG(R5XX_DP_CNTL, R5XX_DST_X_LEFT_TO_RIGHT | R5XX_DST_Y_TOP_TO_BOTTOM);
120
        OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset);
120
        OUTREG(R5XX_DST_PITCH_OFFSET, dstpixmap->pitch_offset);
121
        OUTREG(R5XX_DST_Y_X,(draw->y0<<16)|draw->x0);
121
        OUTREG(R5XX_DST_Y_X,(y0<<16)|x0);
122
        OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|h);
122
        OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|h);
-
 
123
 
-
 
124
        if( draw->color != draw->border)
-
 
125
        {
-
 
126
           OUTREG(R5XX_DP_BRUSH_FRGD_CLR, draw->border);
-
 
127
 
-
 
128
           if( y0 == draw->y0)
-
 
129
           {
-
 
130
              R5xxFIFOWait(2);
-
 
131
 
-
 
132
              OUTREG(R5XX_DST_Y_X,(y0<<16)|x0);
-
 
133
              OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|1);
-
 
134
              y0++;
-
 
135
              h--;
-
 
136
           }
-
 
137
           if( y1 == yend )
-
 
138
           {
-
 
139
              R5xxFIFOWait(2);
-
 
140
 
-
 
141
              OUTREG(R5XX_DST_Y_X,(y1<<16)|x0);
-
 
142
              OUTREG(R5XX_DST_WIDTH_HEIGHT,(w<<16)|1);
-
 
143
              h--;
-
 
144
           }
-
 
145
           if( x0 == draw->x0)
-
 
146
           {
-
 
147
              R5xxFIFOWait(2);
-
 
148
 
-
 
149
              OUTREG(R5XX_DST_Y_X,(y0<<16)|x0);
-
 
150
              OUTREG(R5XX_DST_WIDTH_HEIGHT,(1<<16)|h);
-
 
151
           }
-
 
152
           if( x1 == xend)
-
 
153
           {
-
 
154
              R5xxFIFOWait(2);
-
 
155
 
-
 
156
              OUTREG(R5XX_DST_Y_X,(y0<<16)|x1);
-
 
157
              OUTREG(R5XX_DST_WIDTH_HEIGHT,(1<<16)|h);
-
 
158
           }
-
 
159
        };
123
#else
160
#else
124
      BEGIN_RING();
161
      BEGIN_RING();
125
        OUT_RING(CP_PACKET3(RADEON_CNTL_PAINT_MULTI, 4));
162
        OUT_RING(CP_PACKET3(RADEON_CNTL_PAINT_MULTI, 4));
Line 126... Line 163...
126
 
163