void renderSnapshot2(xGraphics g) { stPriceboardState item = getPriceboard(); if (item != null) { stCell cell = getCellAt(7); // snapshot if (rcSnapshot == null) { rcSnapshot = new Rectangle(); } rcSnapshot.X = cell.x; rcSnapshot.Y = 0; rcSnapshot.Width = cell.w; rcSnapshot.Height = getH(); sharethumb.DrawAChartDelegator.renderToView(item.code, g, rcSnapshot); // date stGainloss gainloss = (stGainloss)getUserData(); String s = Utils.dateIntToStringDDMM(gainloss.date); g.setColor(C.COLOR_WHITE); g.drawStringInRect(cell.f, s, cell.x, getH() - 17, cell.w, 17, xGraphics.LEFT); } }
void drawBlock(xGraphics g, stStatisticsBlock block) { int viewW = getW() - 4; uint alp = 0xa0ffffff; g.setColor(block.color & alp); g.fillRect((int)block.x, (int)block.y, (int)block.w, (int)block.h - 1); if (block.x + block.w < getW() - 4) { g.setColor(0xff202020); int x1 = (int)(block.x + block.w); g.fillRect(x1, (int)block.y, (int)(getW() - 4 - x1), (int)block.h - 1); } Font f = mContext.getFontSmallest(); g.setColor(C.COLOR_WHITE); int itemH = (int)f.GetHeight(); String s = String.Format("{0}; {1}; {2}", block.code, block.changed, block.inf); g.drawStringInRect(f, s, (int)block.x + 4, (int)block.y + 3, getW() / 2, (int)block.h, xGraphics.VCENTER); //g.drawStringInRect(f, block.inf, x, y + h / 2 - 8, w, itemH, xGraphics.HCENTER | xGraphics.TOP); //g.drawStringInRect(f, block.changed, x, y + h / 2 + 4, w, itemH, xGraphics.HCENTER | xGraphics.TOP); }
override public void render(xGraphics g) { g.setColor(C.COLOR_BLACK); g.clear(); if (isProcessing) { g.setColor(C.COLOR_ORANGE); g.drawStringInRect(mContext.getFontSmallB(), "Đang xử lý", 0, 0, getW(), getH(), xGraphics.HCENTER | xGraphics.VCENTER); return; } // title String title = ""; String prefix = mMarketID == 1 ? "[VNX] " : "[HNX] "; if (mChartType == BUBBLE_TRADE_MONEY) { title = prefix + "Luồng tiền (Mã; Thay đổi giá; Giá trị GD)"; } else if (mChartType == BUBBLE_VOLUME_WEIGHT) { title = prefix + "Mức độ ảnh hưởng (Mã; Thay đổi giá; Trọng số)"; } else if (mChartType == BUBBLE_INDEX_WEIGHT_RATIO_INC) { title = prefix + "Tăng Index (Mã; Thay đổi giá; Thay đổi điểm)"; } else if (mChartType == BUBBLE_INDEX_WEIGHT_RATIO_DEC) { title = prefix + "Giảm Index (Mã; Thay đổi giá; Thay đổi điểm)"; } Font f = mContext.getFontText(); g.setColor(C.COLOR_WHITE); g.drawString(f, title, 10, 2, xGraphics.TOP | xGraphics.LEFT); for (int i = 0; i < mUsedBlocks.size(); i++) { stStatisticsBlock b = (stStatisticsBlock)mUsedBlocks.elementAt(i); if (b.w > 0) { drawBlock(g, b); } } }
void drawBlock(xGraphics g, stBubbleBlock block) { Rectangle rc = getBlockRect(block); int x = rc.X; int y = rc.Y; int w = rc.Width; int h = rc.Height; uint alp = 0xd0ffffff; g.setColor(block.color & alp); g.fillRect(x, y, w - 1, h - 1); Font f = mContext.getFontSmallest(); g.setColor(C.COLOR_BLACK); int itemH = (int)f.GetHeight(); if (h > 35) { g.drawStringInRect(f, block.code, x, y + h / 2 - 20, w, itemH, xGraphics.HCENTER | xGraphics.TOP); g.drawStringInRect(f, block.inf, x, y + h / 2 - 8, w, itemH, xGraphics.HCENTER | xGraphics.TOP); g.drawStringInRect(f, block.changed, x, y + h / 2 + 4, w, itemH, xGraphics.HCENTER | xGraphics.TOP); } else if (h > 20) { g.drawStringInRect(f, block.code, x, y + h / 2 - 12, w, itemH, xGraphics.HCENTER | xGraphics.TOP); g.drawStringInRect(f, block.inf, x, y + h / 2 - 2, w, itemH, xGraphics.HCENTER | xGraphics.TOP); } else { g.drawStringInRect(f, block.code, x, y, w, h, xGraphics.HCENTER | xGraphics.TOP); if (h > 18) { g.drawStringInRect(f, block.inf, x, y + 11, w, itemH, xGraphics.HCENTER | xGraphics.TOP); } } }
public void renderSnapshot(int cellVolume, stPriceboardState item, xGraphics g) { if (item != null) { stCell cell = getCellAt(cellVolume); // snapshot if (rcSnapshot == null) { rcSnapshot = new Rectangle(); } rcSnapshot.X = cell.x; rcSnapshot.Y = 0; rcSnapshot.Width = cell.w; rcSnapshot.Height = getH(); sharethumb.DrawAChartDelegator.renderToView(item.code, g, rcSnapshot); // volume String s = Utils.formatVolumeUsingLetters(item.total_volume); g.setColor(C.COLOR_WHITE); g.drawStringInRect(cell.f, s, cell.x, getH() - 17, cell.w, 17, xGraphics.LEFT); } }
override public void render(xGraphics g) { if (getID() < 0) { return; } int x = 0; int y = 2; int h = getH(); if (mCells.size() == 0) { return; } if (mIsSelected && getID() > 0) { g.setColor(C.COLOR_BUTTON_SEL); g.fillRect(0, 0, getW(), getH()); } int i; x = 0; for (i = 0; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); uint color = c.bgColor; int w = c.w; x = c.x; if (color != COLOR_NONE) { g.setColor(color); g.fillRect(x, 0, w, h); } } //---------text // printf("\n=========================================="); for (i = 0; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); if (i == mCandleColumeIdx && getID() != 0) { renderCandle(g, c); continue; } if (c.text2 == null) { g.setColor(c.textColor); if (c.text != null) { g.drawStringInRect(c.f, c.text, c.x, 0, c.w, h, xGraphics.HCENTER | xGraphics.VCENTER); } } else if (getH() < 36) { g.setColor(c.textColor); g.drawStringInRect(c.f, c.text, c.x, (int)(h / 2 - c.f.GetHeight()) + 3, c.w, h / 2, xGraphics.HCENTER | xGraphics.VCENTER); g.setColor(c.textColor2); g.drawStringInRect(c.f, c.text2, c.x, h / 2 + 1, c.w, (int)(c.f.GetHeight()), xGraphics.HCENTER | xGraphics.VCENTER); } else { g.setColor(c.textColor); g.drawStringInRect(c.f, c.text, c.x, (int)(h / 2 - c.f.GetHeight()) - 0, c.w, h / 2, xGraphics.HCENTER | xGraphics.VCENTER); g.setColor(c.textColor2); g.drawStringInRect(c.f, c.text2, c.x, h / 2 + 2, c.w, (int)(c.f.GetHeight()), xGraphics.HCENTER | xGraphics.VCENTER); } //Utils.trace("here 5:" + c.text + " x=" + c.x + " w=" + c.w + " h=" + h); } // grid g.setColor(0xff808080); for (i = 1; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); x = c.x; g.drawLine(x, y, x, y + h); } g.drawHorizontalLine(0, 0, getW()); /* * // history chart button * if (getID() > 0) * { * g.setColor(C.COLOR_ORANGE); * int tmp = 6; * y = getH() / 2; * x = getW() - tmp - 4; * g.drawLine(x, y - tmp, x + tmp, y); * g.drawLine(x, y + tmp, x + tmp, y); * } */ // render snapshot if (mVolumeColumn >= 0) { stPriceboardState item = getPriceboard(); renderSnapshot(11, item, g); } }
override public void render(xGraphics g) { //========================= if (viewState == VIEWSTATE_1_NHOMNGANH && chartG != null) { chartG.render(g); return; } g.setColor(C.COLOR_BLACK); g.clear(); if (isProcessing) { g.setColor(C.COLOR_ORANGE); g.drawStringInRect(mContext.getFontSmallB(), "Đang xử lý", 0, 0, getW(), getH(), xGraphics.HCENTER | xGraphics.VCENTER); return; } // title // [Hom nay] [1 Tuan] [1 Thang] [3 thang] [1 nam] // Tang | Giam | // VN30: +15%; GTDG: 30.1ti .Chart // if (mChanges.size() == 0) { calcChanged(mPeriod); } if (mChanges.size() == 0) { return; } float x, y; int buttonW = 80; int buttonH = 26; int gap = 4; x = (getW() - 6 * (buttonW + gap)) / 2; // button y = 2; mButtonPositions.removeAllElements(); mPeriods.removeAllElements(); string[] buttons = { "1 Ngày", "1 Tuần", "1 Tháng", "3 Tháng", "6 Tháng", "1 Năm" }; int[] periods = { 1, 5, 22, 67, 130, 260 }; for (int i = 0; i < buttons.Length; i++) { string s = buttons[i]; g.setColor(C.COLOR_GRAY_LIGHT); g.drawRect((int)x, 2, buttonW, buttonH); g.setColor(mPeriod == periods[i]?C.COLOR_ORANGE:C.COLOR_WHITE); g.drawStringInRect(mContext.getFontSmallB(), s, (int)x, (int)y, buttonW, buttonH, xGraphics.HCENTER | xGraphics.VCENTER); Rectangle rc = new Rectangle((int)x, 2, buttonW, buttonH); mButtonPositions.addElement(rc); mPeriods.addElement(periods[i]); x += buttonW + gap; } g.setColor(C.COLOR_GRAY_DARK); g.drawHorizontalLine(0, buttonH + 4, getW()); int columnH = ItemH; double maxPercent = 0; for (int i = 0; i < mChanges.size(); i++) { GroupChanges gc = (GroupChanges)mChanges.elementAt(i); if (Math.Abs(gc.changedPercent) > maxPercent) { maxPercent = Math.Abs(gc.changedPercent); } } //-------------------- int buttonY = 30; int drawH = getH() - buttonY; ItemH = getItemH(getH() - 40, mChanges.size()); float cellW = getW() / 2; float cellH = ItemH; maxPercent *= 1.15; // Left side int j = 0; y = buttonY + 4; int itemPerColumn = mChanges.size() / 2; for (int i = 0; i < itemPerColumn; i++) { GroupChanges gc = (GroupChanges)mChanges.elementAt(i); x = 2; //if (gc.changedPercent >= 0) { y = buttonY + 4 + j * cellH; cellW = (float)((Math.Abs(gc.changedPercent) / maxPercent) * getW() / 2); g.setColor(gc.changedPercent > 0?C.COLOR_GREEN_DARK:C.COLOR_RED); g.fillRectF(x, y, cellW, cellH - 2); // text g.setColor(C.COLOR_WHITE); if (gc.changedPercent >= 0) { string s = String.Format("{0} +{1:F2} %", gc.code, gc.changedPercent); g.drawString(mContext.getFontText(), s, (int)x, (int)(y + cellH / 2), xGraphics.VCENTER); } else { string s = String.Format("{0} {1:F2} %", gc.code, gc.changedPercent); g.drawString(mContext.getFontText(), s, (int)x, (int)(y + cellH / 2), xGraphics.VCENTER); } j++; gc.x = (int)x; gc.y = (int)y; gc.w = (int)getW() / 2 - 10; gc.h = (int)cellH; } } g.setColor(C.COLOR_GRAY_DARK); g.drawVerticalLine(getW() / 2, buttonY, getH()); // Right side j = 0; for (int i = itemPerColumn; i < mChanges.size(); i++) { GroupChanges gc = (GroupChanges)mChanges.elementAt(i); x = getW() / 2 + 2; //if (gc.changedPercent < 0) { y = buttonY + 4 + j * cellH; cellW = (float)((Math.Abs(gc.changedPercent) / maxPercent) * getW() / 2); g.setColor(gc.changedPercent > 0 ? C.COLOR_GREEN_DARK : C.COLOR_RED); g.fillRectF(x, y, cellW, cellH - 2); // text g.setColor(C.COLOR_WHITE); if (gc.changedPercent >= 0) { string s = String.Format("{0}: +{1:F2} %", gc.code, gc.changedPercent); g.drawString(mContext.getFontText(), s, (int)x, (int)(y + cellH / 2), xGraphics.VCENTER); } else { string s = String.Format("{0}: {1:F2} %", gc.code, gc.changedPercent); g.drawString(mContext.getFontText(), s, (int)x, (int)(y + cellH / 2), xGraphics.VCENTER); } j++; gc.x = (int)x; gc.y = (int)y; gc.w = (int)getW() / 2 - 10; gc.h = (int)cellH; } } }
public override void render(xGraphics g) { if (getID() < 0) { return; } int x = 0; int y = 2; int h = getH(); if (mCells.size() == 0) { return; } if (mIsSelected && getID() > 0) { g.setColor(C.COLOR_BUTTON_SEL); g.fillRect(0, 0, getW(), getH()); } int i; x = 0; for (i = 0; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); uint color = c.bgColor; int w = c.w; x = c.x; if (color != COLOR_NONE) { g.setColor(color); g.fillRect(x, 0, w, h); } } //---------text // printf("\n=========================================="); for (i = 0; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); if (i == mCandleColumeIdx && getID() != 0) { renderCandle(g, c); continue; } if (c.text2 == null) { g.setColor(c.textColor); if (c.text != null) { g.drawStringInRect(c.f, c.text, c.x, 0, c.w, h, xGraphics.HCENTER | xGraphics.VCENTER); } } else { g.setColor(c.textColor); g.drawStringInRect(c.f, c.text, c.x, (int)(h / 2 - c.f.GetHeight()) - 0, c.w, h / 2, xGraphics.HCENTER | xGraphics.VCENTER); g.setColor(c.textColor2); g.drawStringInRect(c.f, c.text2, c.x, h / 2 + 2, c.w, (int)(c.f.GetHeight()), xGraphics.HCENTER | xGraphics.VCENTER); } //Utils.trace("here 5:" + c.text + " x=" + c.x + " w=" + c.w + " h=" + h); } // grid g.setColor(0xff808080); for (i = 1; i < mCells.size(); i++) { stCell c = (stCell)mCells.elementAt(i); x = c.x; g.drawLine(x, y, x, y + h); } g.drawHorizontalLine(0, 0, getW()); // snapshot and volume String code = getCode(); if (code != null) { // volume stPriceboardState item = Context.getInstance().mPriceboard.getPriceboard(code); if (item != null) { renderSnapshot(3, item, g); } } }
override public void render(xGraphics g) { g.setColor(C.COLOR_BLACK); g.clear(); if (isProcessing) { g.setColor(C.COLOR_ORANGE); g.drawStringInRect(mContext.getFontSmallB(), "Đang xử lý", 0, 0, getW(), getH(), xGraphics.HCENTER | xGraphics.VCENTER); return; } if (onBack != null) { g.setColor(C.COLOR_ORANGE); g.drawString(mContext.getFontSmall(), "<<<BACK", 10, 4); } if (onHistoryClick != null) { g.setColor(C.COLOR_ORANGE); g.drawString(mContext.getFontSmall(), ">>>Đồ Thị", getW() - 10, 4, xGraphics.RIGHT); } // title // [Hom nay] [1 Tuan] [1 Thang] [3 thang] [1 nam] // Tang | Giam | // VN30: +15%; GTDG: 30.1ti ->Chart // if (mChanges.size() == 0) { calcChanged(mPeriod); } if (mChanges.size() == 0) { return; } float x, y; int buttonW = 76; int buttonH = 26; int gap = 4; x = (getW() - 6 * (buttonW + gap)) / 2; // button y = 2; mButtonPositions.removeAllElements(); mPeriods.removeAllElements(); string[] buttons = { "1 Ngày", "1 Tuần", "1 Tháng", "3 Tháng", "6 Tháng", "1 Năm" }; int[] periods = { 1, 5, 22, 67, 130, 260 }; for (int i = 0; i < buttons.Length; i++) { string s = buttons[i]; g.setColor(C.COLOR_GRAY_LIGHT); g.drawRect((int)x, 2, buttonW, buttonH); g.setColor(mPeriod == periods[i]?C.COLOR_ORANGE:C.COLOR_WHITE); g.drawStringInRect(mContext.getFontSmallB(), s, (int)x, (int)y, buttonW, buttonH, xGraphics.HCENTER | xGraphics.VCENTER); Rectangle rc = new Rectangle((int)x, 2, buttonW, buttonH); mButtonPositions.addElement(rc); mPeriods.addElement(periods[i]); x += buttonW + gap; } g.setColor(C.COLOR_GRAY_DARK); g.drawHorizontalLine(0, buttonH + 4, getW()); int numberOfColumns = 4; int maxItemPerColumns = mChanges.size() / numberOfColumns; if ((mChanges.size() % numberOfColumns) != 0) { maxItemPerColumns++; } ItemH = (getH() - 40) / maxItemPerColumns; int columnH = ItemH; float maxPercent = 0; for (int i = 0; i < mChanges.size(); i++) { ShareChanges gc = (ShareChanges)mChanges.elementAt(i); if (Math.Abs(gc.changedPercent) > maxPercent) { maxPercent = (float)Math.Abs(gc.changedPercent); } } //-------------------- int buttonY = 30; columnH = ItemH; float cellW = getW() / numberOfColumns; float cellH = ItemH; maxPercent *= 1.15f; // Left side int j = 0; y = buttonY + 4; int itemPerColumn = maxItemPerColumns; x = 2; drawItems(0, maxItemPerColumns, x, y, cellW, columnH, maxPercent, numberOfColumns, g); x += getW() / numberOfColumns; drawItems(maxItemPerColumns, maxItemPerColumns, x, y, cellW, columnH, maxPercent, numberOfColumns, g); x += getW() / numberOfColumns; drawItems(2 * maxItemPerColumns, maxItemPerColumns, x, y, cellW, columnH, maxPercent, numberOfColumns, g); x += getW() / numberOfColumns; drawItems(3 * maxItemPerColumns, maxItemPerColumns, x, y, cellW, columnH, maxPercent, numberOfColumns, g); }
public override void render(xGraphics g) { g.setColor(0xff002000); g.fillRect(0, 0, getW(), getH()); if (_isProcessing) { g.setColor(C.COLOR_ORANGE); g.drawStringInRect(mContext.getFontSmallB(), "Đang xử lý", 0, 0, getW(), getH(), xGraphics.HCENTER | xGraphics.VCENTER); return; } g.setColor(C.COLOR_ORANGE); String sz = String.Format("MãCP (giá, thay đổi %): Tăng/Giảm index: {0:F2}/{1:F2}", totalIndexInc, totalIndexDec); g.drawString(mContext.getFontSmall(), sz, 8, 1, xGraphics.TOP); if (totalIndexInc == 0 && totalIndexDec == 0) { return; } double total = totalIndexInc + Math.Abs(totalIndexDec); float incPercent = (float)(totalIndexInc / total); float decPercent = (float)(Math.Abs(totalIndexDec) / total); if (incPercent < 0.25) { incPercent = 0.25f; decPercent = 1.0f - incPercent; } if (decPercent < 0.25) { decPercent = 0.25f; incPercent = 1.0f - decPercent; } float incW = (getW() - 4) * 0.5f; //incPercent; float decW = (getW() - 4) * 0.5f; //decPercent; int maxItems = 22; int incCnt = vChangeInc.size() > maxItems?maxItems:vChangeInc.size(); float itemH = (getH() - 20) / maxItems; int decCnt = vChangeDec.size() > maxItems?maxItems:vChangeDec.size(); int x0 = 1; int x1 = (int)(getW() - decW); float incBiggest = 0; float decBiggest = 0; ChangeIndexItem first = (ChangeIndexItem)vChangeInc.firstElement(); if (vChangeInc.size() > 0) { incBiggest = 1.1f * first.modifiedValue; } first = (ChangeIndexItem)vChangeDec.firstElement(); if (vChangeDec.size() > 0) { decBiggest = 1.1f * first.modifiedValue; } float maxBiggest = Math.Max(incBiggest, decBiggest); int titleH = 20; // increase for (int i = 0; i < incCnt; i++) { ChangeIndexItem item = (ChangeIndexItem)vChangeInc.elementAt(i); g.setColor(C.COLOR_GREEN_DARK); float y = titleH + i * itemH; float itemW = item.modifiedValue * incW / maxBiggest; g.fillRectF(x0, y, itemW, itemH - 1); g.setColor(C.COLOR_WHITE); stPriceboardState ps = mContext.mPriceboard.getPriceboard(item.shareID); sz = String.Format("{0}({1:F1}, {2:F1}%): {3:F3}", ps.code, item.price, item.modifiedPercent, item.modifiedValue); g.drawStringF(mContext.getFontSmall(), sz, x0 + 8, y + itemH / 2, xGraphics.VCENTER); item.x = x0; item.y = y; item.w = incW; item.h = itemH; } // decrease for (int i = 0; i < decCnt; i++) { ChangeIndexItem item = (ChangeIndexItem)vChangeDec.elementAt(i); g.setColor(C.COLOR_RED); float y = titleH + i * itemH; float itemW = item.modifiedValue * decW / maxBiggest; g.fillRectF(x1, y, itemW, itemH - 1); g.setColor(C.COLOR_WHITE); stPriceboardState ps = mContext.mPriceboard.getPriceboard(item.shareID); sz = String.Format("{0}({1:F1}, {2:F1%}): {3:F3}", ps.code, item.price, item.modifiedPercent, item.modifiedValue); g.drawStringF(mContext.getFontSmall(), sz, x1 + 8, y + itemH / 2, xGraphics.VCENTER); item.x = x1; item.y = y; item.w = decW; item.h = itemH; } if (currentSelected != null && currentSelected.selected) { g.setColor(C.COLOR_ORANGE); g.drawRectF(currentSelected.x, currentSelected.y, currentSelected.w, currentSelected.h); } }