@ -157,7 +157,6 @@
- each ImDrawList now contains both a vertex buffer and an index buffer . For each command , render ElemCount / 3 triangles using indices from the index buffer .
- if you REALLY cannot render indexed primitives , you can call the draw_data - > DeIndexAllBuffers ( ) method to de - index your buffer . This is slow and a waste of CPU / GPU . Prefer using indexed rendering !
- refer to code in the examples / folder or ask on the GitHub if you are unsure of how to upgrade . please upgrade !
- removed the ' thickness ' parameter from ImDrawList : : AddLine ( ) .
- 2015 / 07 / 02 ( 1.42 ) - renamed SetScrollPosHere ( ) to SetScrollFromCursorPos ( ) . Kept inline redirection function ( will obsolete ) .
- 2015 / 07 / 02 ( 1.42 ) - renamed GetScrollPosY ( ) to GetScrollY ( ) . Necessary to reduce confusion along with other scrolling functions , because positions ( e . g . cursor position ) are not equivalent to scrolling amount .
- 2015 / 06 / 14 ( 1.41 ) - changed ImageButton ( ) default bg_col parameter from ( 0 , 0 , 0 , 1 ) ( black ) to ( 0 , 0 , 0 , 0 ) ( transparent ) - makes a difference when texture have transparence
@ -399,6 +398,7 @@
- separator : separator on the initial position of a window is not visible ( cursorpos . y < = clippos . y )
- gauge : various forms of gauge / loading bars widgets
- color : better color editor .
- plot : plotlines should use the polygon - stroke facilities ( currently issues with averaging normals )
- plot : make it easier for user to draw extra stuff into the graph ( e . g : draw basis , highlight certain points , 2 d plots , multiple plots )
- plot : " smooth " automatic scale over time , user give an input 0.0 ( full user scale ) 1.0 ( full derived from value )
- plot : add a helper e . g . Plot ( char * label , float value , float time_span = 2.0f ) that stores values and Plot them for you - probably another function name . and / or automatically allow to plot ANY displayed value ( more reliance on stable ID )
@ -433,6 +433,7 @@
- input : rework IO to be able to pass actual events to fix temporal aliasing issues .
- input : support track pad style scrolling & slider edit .
- portability : big - endian test / support ( # 81 )
- drawlist : add support for anti - aliased lines with > 1.0f thickness ( # 133 )
- memory : add a way to discard allocs of unused / transient windows . with the current architecture new windows ( including popup , opened combos , listbox ) perform at least 3 allocs .
- misc : mark printf compiler attributes on relevant functions
- misc : provide a way to compile out the entire implementation while providing a dummy API ( e . g . # define IMGUI_DUMMY_IMPL )
@ -9199,7 +9200,7 @@ void ImDrawList::PrimRectUV(const ImVec2& a, const ImVec2& c, const ImVec2& uv_a
_IdxWritePtr + = 6 ;
}
void ImDrawList : : AddPolyline ( const ImVec2 * points , const int points_count , ImU32 col , bool closed , bool anti_aliased )
void ImDrawList : : AddPolyline ( const ImVec2 * points , const int points_count , ImU32 col , bool closed , float thickness , bool anti_aliased )
{
if ( points_count < 2 )
return ;
@ -9215,7 +9216,7 @@ void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32
count = points_count - 1 ;
}
if ( anti_aliased )
if ( anti_aliased & & thickness = = 1.0f )
{
// Anti-aliased stroke
const float AA_SIZE = 1.0f ;
@ -9272,10 +9273,10 @@ void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32
temp_inner [ i2 ] = points [ i2 ] - dm ;
// Add indexes
_IdxWritePtr [ 0 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ; _IdxWritePtr [ 1 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ; _IdxWritePtr [ 2 ] = ( ImDrawIdx ) ( vtx_outer_idx + i1 * 3 ) ;
_IdxWritePtr [ 3 ] = ( ImDrawIdx ) ( vtx_outer_idx + i1 * 3 ) ; _IdxWritePtr [ 4 ] = ( ImDrawIdx ) ( vtx_outer_idx + i2 * 3 ) ; _IdxWritePtr [ 5 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ;
_IdxWritePtr [ 6 ] = ( ImDrawIdx ) ( vtx_inner_idx + i2 * 3 ) ; _IdxWritePtr [ 7 ] = ( ImDrawIdx ) ( vtx_inner_idx + i1 * 3 ) ; _IdxWritePtr [ 8 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ;
_IdxWritePtr [ 9 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ; _IdxWritePtr [ 10 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ; _IdxWritePtr [ 11 ] = ( ImDrawIdx ) ( vtx_inner_idx + i2 * 3 ) ;
_IdxWritePtr [ 0 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ; _IdxWritePtr [ 1 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ; _IdxWritePtr [ 2 ] = ( ImDrawIdx ) ( vtx_outer_idx + i1 * 3 ) ;
_IdxWritePtr [ 3 ] = ( ImDrawIdx ) ( vtx_outer_idx + i1 * 3 ) ; _IdxWritePtr [ 4 ] = ( ImDrawIdx ) ( vtx_outer_idx + i2 * 3 ) ; _IdxWritePtr [ 5 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ;
_IdxWritePtr [ 6 ] = ( ImDrawIdx ) ( vtx_inner_idx + i2 * 3 ) ; _IdxWritePtr [ 7 ] = ( ImDrawIdx ) ( vtx_inner_idx + i1 * 3 ) ; _IdxWritePtr [ 8 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ;
_IdxWritePtr [ 9 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i1 * 3 ) ; _IdxWritePtr [ 10 ] = ( ImDrawIdx ) ( _VtxCurrentIdx + i2 * 3 ) ; _IdxWritePtr [ 11 ] = ( ImDrawIdx ) ( vtx_inner_idx + i2 * 3 ) ;
_IdxWritePtr + = 12 ;
}
@ -9304,8 +9305,8 @@ void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32
ImVec2 diff = p2 - p1 ;
diff * = ImInvLength ( diff , 1.0f ) ;
const float dx = diff . x * 0.5f ;
const float dy = diff . y * 0.5f ;
const float dx = diff . x * ( thickness * 0.5f ) ;
const float dy = diff . y * ( thickness * 0.5f ) ;
_VtxWritePtr [ 0 ] . pos . x = p1 . x + dy ; _VtxWritePtr [ 0 ] . pos . y = p1 . y - dx ; _VtxWritePtr [ 0 ] . uv = uv ; _VtxWritePtr [ 0 ] . col = col ;
_VtxWritePtr [ 1 ] . pos . x = p2 . x + dy ; _VtxWritePtr [ 1 ] . pos . y = p2 . y - dx ; _VtxWritePtr [ 1 ] . uv = uv ; _VtxWritePtr [ 1 ] . col = col ;
_VtxWritePtr [ 2 ] . pos . x = p2 . x - dy ; _VtxWritePtr [ 2 ] . pos . y = p2 . y + dx ; _VtxWritePtr [ 2 ] . uv = uv ; _VtxWritePtr [ 2 ] . col = col ;
@ -9473,13 +9474,13 @@ void ImDrawList::PathRect(const ImVec2& a, const ImVec2& b, float rounding, int
}
}
void ImDrawList : : AddLine ( const ImVec2 & a , const ImVec2 & b , ImU32 col )
void ImDrawList : : AddLine ( const ImVec2 & a , const ImVec2 & b , ImU32 col , float thickness )
{
if ( ( col > > 24 ) = = 0 )
return ;
PathLineTo ( a + ImVec2 ( 0.5f , 0.5f ) ) ;
PathLineTo ( b + ImVec2 ( 0.5f , 0.5f ) ) ;
PathStroke ( col , false );
PathStroke ( col , false , thickness );
}
void ImDrawList : : AddRect ( const ImVec2 & a , const ImVec2 & b , ImU32 col , float rounding , int rounding_corners )
@ -11381,7 +11382,7 @@ void ImGui::ShowTestWindow(bool* opened)
// Draw a line between the button and the mouse cursor
ImDrawList * draw_list = ImGui : : GetWindowDrawList ( ) ;
draw_list - > PushClipRectFullScreen ( ) ;
draw_list - > AddLine ( ImGui : : CalcItemRectClosestPoint ( ImGui : : GetIO ( ) . MousePos , true , - 2.0f ) , ImGui : : GetIO ( ) . MousePos , ImColor ( ImGui : : GetStyle ( ) . Colors [ ImGuiCol_Button ] ) );
draw_list - > AddLine ( ImGui : : CalcItemRectClosestPoint ( ImGui : : GetIO ( ) . MousePos , true , - 2.0f ) , ImGui : : GetIO ( ) . MousePos , ImColor ( ImGui : : GetStyle ( ) . Colors [ ImGuiCol_Button ] ) , 4.0f );
draw_list - > PopClipRect ( ) ;
ImVec2 value_raw = ImGui : : GetMouseDragDelta ( 0 , 0.0f ) ;
ImVec2 value_with_lock_threshold = ImGui : : GetMouseDragDelta ( 0 ) ;