re-implemented sorting
This commit is contained in:
		
							parent
							
								
									44869a7926
								
							
						
					
					
						commit
						07993f5bb5
					
				
							
								
								
									
										2948
									
								
								output.pdf
								
								
								
								
							
							
						
						
									
										2948
									
								
								output.pdf
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -30,6 +30,13 @@ const Card = struct { | ||||||
| const TextCard = struct { | const TextCard = struct { | ||||||
|     lines: [][]const u8 = undefined, |     lines: [][]const u8 = undefined, | ||||||
| }; | }; | ||||||
|  | const CardSortContext = struct { | ||||||
|  |     const Self = @This(); | ||||||
|  |     list: []TextCard, | ||||||
|  |     pub fn lessThan(ctx: Self, a: usize, b: usize) bool { | ||||||
|  |         return ctx.list[a].lines.len < ctx.list[b].lines.len; | ||||||
|  |     } | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| //dimension constants and defaults | //dimension constants and defaults | ||||||
| const cardWidth = 30; | const cardWidth = 30; | ||||||
|  | @ -89,6 +96,7 @@ pub fn main() !void { | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     cards.sort(CardSortContext{ .list = cards.values() }); | ||||||
|     var allPrinted = std.ArrayList([]const u8).init(allocator); |     var allPrinted = std.ArrayList([]const u8).init(allocator); | ||||||
| 
 | 
 | ||||||
|     const pdf_doc: *c.pdf_doc = @ptrCast(c.pdf_create(c.PDF_A4_WIDTH, c.PDF_A4_HEIGHT, &c.pdf_info{ .creator = ("My Software" ++ " " ** 53).* }).?); |     const pdf_doc: *c.pdf_doc = @ptrCast(c.pdf_create(c.PDF_A4_WIDTH, c.PDF_A4_HEIGHT, &c.pdf_info{ .creator = ("My Software" ++ " " ** 53).* }).?); | ||||||
|  | @ -213,9 +221,6 @@ const cardRow = struct { | ||||||
|                 const strippedLine = std.mem.trimRight(u8, line, " "); |                 const strippedLine = std.mem.trimRight(u8, line, " "); | ||||||
|                 const paddedLine = try std.fmt.allocPrint(gpa.allocator(), lineFormatter, .{strippedLine}); |                 const paddedLine = try std.fmt.allocPrint(gpa.allocator(), lineFormatter, .{strippedLine}); | ||||||
|                 // const theoreticalLength = (paddedLine.len * 3) + 1; |                 // const theoreticalLength = (paddedLine.len * 3) + 1; | ||||||
|                 std.debug.print("{s}\n", .{paddedLine}); |  | ||||||
|                 std.debug.print("expected {d}, got: ", .{dw.strWidth(spacer)}); |  | ||||||
|                 std.debug.print("{d}\n", .{dw.strWidth(paddedLine)}); |  | ||||||
|                 assert(dw.strWidth(paddedLine) == dw.strWidth(spacer)); |                 assert(dw.strWidth(paddedLine) == dw.strWidth(spacer)); | ||||||
|                 // assert(theoreticalLength == pageWidth); |                 // assert(theoreticalLength == pageWidth); | ||||||
|                 const placeholder = if (idx < lines.items(.first).len) lines.get(idx) else cardRow{}; |                 const placeholder = if (idx < lines.items(.first).len) lines.get(idx) else cardRow{}; | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue