Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | fixes for 3D displaying of borders |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d0c312bca64b102501875172234596fb |
User & Date: | arnulf 2013-08-31 11:11:23.924 |
Context
2013-08-31
| ||
22:32 | removed Draw*Border functions with sub functions, now implemented in Tcl. check-in: ef2f9791d8 user: arnulf tags: trunk | |
11:11 | fixes for 3D displaying of borders check-in: d0c312bca6 user: arnulf tags: trunk | |
2013-08-30
| ||
21:09 | fixes for doing real 3D borders for buttons check-in: d76bff8039 user: arnulf tags: trunk | |
Changes
Changes to generic/gles2Builtin.c.
︙ | ︙ | |||
714 715 716 717 718 719 720 | } void VerticalBevel(Tcl_Interp *interp, int x, int y, int z, int width, int height, int depth, int leftBevel, char *relief, shadowColors shadow_colors, int side) { Tcl_Obj *obj; Tcl_Obj *cmd_obj; Tcl_Obj *cmd_objv[1]; | | | | 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 | } void VerticalBevel(Tcl_Interp *interp, int x, int y, int z, int width, int height, int depth, int leftBevel, char *relief, shadowColors shadow_colors, int side) { Tcl_Obj *obj; Tcl_Obj *cmd_obj; Tcl_Obj *cmd_objv[1]; //fprintf(stderr, "VerticalBevel!x!%d!y!%d!z!%d!width!%d!height!%d!depth!%d!relief!%s!\n", x, y, z, width, height, depth, relief); if (strcmp(relief, "raised") == 0) { if (leftBevel) { obj = BuildVertexInfo(interp, x, y, z, width, height, depth, shadow_colors.light_red, shadow_colors.light_green, shadow_colors.light_blue, shadow_colors.light_alpha, side); } else { obj = BuildVertexInfo(interp, x, y, z, width, height, depth, shadow_colors.dark_red, shadow_colors.dark_green, shadow_colors.dark_blue, shadow_colors.dark_alpha, side); } cmd_obj = Tcl_NewStringObj("::gles2::builtin::fillrectangle", -1); cmd_objv[0] = cmd_obj; if (Tcl_ListObjReplace(interp, obj, 0, 0, 1, cmd_objv) != TCL_OK) { //fprintf(stderr, "VerticalBevel: cannot insert command in front of vertex info\n"); exit(1); } //fprintf(stderr, "obj!%s!\n", Tcl_GetString(obj)); if (Tcl_EvalObjEx(interp, obj, 0) != TCL_OK) { //fprintf(stderr, "VerticalBevel: error in executing fillrectangle command:%s\n", Tcl_GetStringResult(interp)); exit(1); } // XFillRectangle(display, drawable, // (leftBevel) ? borderPtr->lightGC : borderPtr->darkGC, // x, y, (unsigned) width, (unsigned) height); |
︙ | ︙ | |||
822 823 824 825 826 827 828 | int bottomGC; int myGC; #define GC_DARK 1 #define GC_LITE 2 #define GC_BRDR 3 #define GC_BLAK 4 | | | 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 | int bottomGC; int myGC; #define GC_DARK 1 #define GC_LITE 2 #define GC_BRDR 3 #define GC_BLAK 4 //fprintf(stderr, "HorizontalBevel!x!%d!y!%d!z!%d!width!%d!height!%d!depth!%d!relief!%s!leftIn!%d!rightIn!%d!\n", x, y, z, width, height, depth, relief, leftIn, rightIn); topGC = GC_BLAK; bottomGC = GC_BLAK; if (strcmp(relief, "raised") == 0) { if (topBevel) { topGC = GC_LITE; bottomGC = GC_LITE; } else { |
︙ | ︙ | |||
1592 1593 1594 1595 1596 1597 1598 | return TCL_ERROR; } /* depth */ if (Tcl_GetIntFromObj(interp, boxObjv[5], &position_box.depth) != TCL_OK) { fprintf(stderr, "bad value for depth!%s!\n", Tcl_GetString(boxObjv[5])); return TCL_ERROR; } | | | 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 | return TCL_ERROR; } /* depth */ if (Tcl_GetIntFromObj(interp, boxObjv[5], &position_box.depth) != TCL_OK) { fprintf(stderr, "bad value for depth!%s!\n", Tcl_GetString(boxObjv[5])); return TCL_ERROR; } //fprintf(stderr, "POS!%d!%d!%d %d!%d!%d!\n", position_box.x, position_box.y, position_box.z, position_box.width, position_box.height, position_box.depth); /* borderWidth */ if (Tcl_GetIntFromObj(interp, objv[2], &borderWidth) != TCL_OK) { fprintf(stderr, "bad value for borderWidth!%s!\n", Tcl_GetString(objv[2])); return TCL_ERROR; } relief = Tcl_GetString(objv[3]); |
︙ | ︙ | |||
1681 1682 1683 1684 1685 1686 1687 | VerticalBevel(interp, position_box.x, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 1, relief, shadow_colors, LEFT_SIDE); } VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, FRONT_SIDE); if (position_box.depth > 0) { VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, RIGHT_SIDE); VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, LEFT_SIDE); } | < < < < | 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 | VerticalBevel(interp, position_box.x, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 1, relief, shadow_colors, LEFT_SIDE); } VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, FRONT_SIDE); if (position_box.depth > 0) { VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, RIGHT_SIDE); VerticalBevel(interp, position_box.x+position_box.width-borderWidth, position_box.y, position_box.z, borderWidth, position_box.height, position_box.depth, 0, relief, shadow_colors, LEFT_SIDE); } HorizontalBevel(interp, position_box.x, position_box.y+position_box.height-borderWidth, position_box.z, position_box.width, borderWidth, position_box.depth, 1, 1, 1, relief, shadow_colors, FRONT_SIDE); if (position_box.depth > 0) { HorizontalBevel(interp, position_box.x, position_box.y+position_box.height-borderWidth, position_box.z, position_box.width, borderWidth, position_box.depth, 1, 1, 1, relief, shadow_colors, TOP_SIDE); HorizontalBevel(interp, position_box.x, position_box.y+position_box.height-borderWidth, position_box.z, position_box.width, borderWidth, position_box.depth, 1, 1, 1, relief, shadow_colors, BOTTOM_SIDE); HorizontalBevel(interp, position_box.x, position_box.y+position_box.height-borderWidth, position_box.z, position_box.width, borderWidth, position_box.depth, 1, 1, 1, relief, shadow_colors, BACK_SIDE); } HorizontalBevel(interp, position_box.x, position_box.y, position_box.z, position_box.width, borderWidth, position_box.depth, 0, 0, 0, relief, shadow_colors, FRONT_SIDE); if (position_box.depth > 0) { HorizontalBevel(interp, position_box.x, position_box.y, position_box.z, position_box.width, borderWidth, position_box.depth, 0, 0, 0, relief, shadow_colors, TOP_SIDE); HorizontalBevel(interp, position_box.x, position_box.y, position_box.z, position_box.width, borderWidth, position_box.depth, 0, 0, 0, relief, shadow_colors, BOTTOM_SIDE); HorizontalBevel(interp, position_box.x, position_box.y, position_box.z, position_box.width, borderWidth, position_box.depth, 0, 0, 0, relief, shadow_colors, BACK_SIDE); } return result; } |
︙ | ︙ |
Changes to generic/gles2Helpers.c.
︙ | ︙ | |||
1021 1022 1023 1024 1025 1026 1027 | Tcl_Obj *blueObj, /* blue part */ Tcl_Obj *alphaObj, /* alpha part */ Tcl_Obj *obj) /* Tcl_Obj to appen to */ { Tcl_Obj *listObj; Tcl_Obj *list1Obj; | | | 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 | Tcl_Obj *blueObj, /* blue part */ Tcl_Obj *alphaObj, /* alpha part */ Tcl_Obj *obj) /* Tcl_Obj to appen to */ { Tcl_Obj *listObj; Tcl_Obj *list1Obj; //fprintf(stderr, "AppendVertexPos!%f!%f!%f!\n", x, y, z); listObj = Tcl_NewListObj(0, NULL); /* the pos obj */ list1Obj = Tcl_NewListObj(0, NULL); /* the position obj */ if (Tcl_ListObjAppendElement(interp, list1Obj, Tcl_NewDoubleObj(x)) != TCL_OK) { fprintf(stderr, "BuildVertexInfoPos could not append x value: %s\n", Tcl_GetString(listObj)); return NULL; } |
︙ | ︙ | |||
1113 1114 1115 1116 1117 1118 1119 | //green = 0.0; //blue = 0.0; redObj = Tcl_NewDoubleObj(red); greenObj = Tcl_NewDoubleObj(green); blueObj = Tcl_NewDoubleObj(blue); alphaObj = Tcl_NewDoubleObj(alpha); | | | 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 | //green = 0.0; //blue = 0.0; redObj = Tcl_NewDoubleObj(red); greenObj = Tcl_NewDoubleObj(green); blueObj = Tcl_NewDoubleObj(blue); alphaObj = Tcl_NewDoubleObj(alpha); //fprintf(stderr, "BuildVertexInfo!%d! %d!%d!%d! %d!%d!%d!\n", side, x, y, z, width, height, depth); obj = Tcl_NewListObj(0, NULL); /* the return obj */ switch(side) { case FRONT_SIDE: /* position1 */ f_x = -1+Pixel2Coord(interp,x, 1); f_y = -1+Pixel2Coord(interp, y, 0); f_z = -1+Pixel2Coord(interp, z, -1); |
︙ | ︙ |