Home | History | Annotate | Download | only in cocoa
      1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_UI_COCOA_STYLED_TEXT_FIELD_CELL_H_
      6 #define CHROME_BROWSER_UI_COCOA_STYLED_TEXT_FIELD_CELL_H_
      7 #pragma once
      8 
      9 #import <Cocoa/Cocoa.h>
     10 
     11 typedef enum {
     12   StyledTextFieldCellRoundedAll = 0,
     13   StyledTextFieldCellRoundedLeft = 1
     14 } StyledTextFieldCellRoundedFlags;
     15 
     16 // StyledTextFieldCell customizes the look of the standard Cocoa text field.
     17 // The border and focus ring are modified, as is the font baseline.  Subclasses
     18 // can override |drawInteriorWithFrame:inView:| to provide custom drawing for
     19 // decorations, but they must make sure to call the superclass' implementation
     20 // with a modified frame after performing any custom drawing.
     21 
     22 @interface StyledTextFieldCell : NSTextFieldCell {
     23 }
     24 
     25 @end
     26 
     27 // Methods intended to be overridden by subclasses, not part of the public API
     28 // and should not be called outside of subclasses.
     29 @interface StyledTextFieldCell (ProtectedMethods)
     30 
     31 // Return the portion of the cell to show the text cursor over.  The default
     32 // implementation returns the full |cellFrame|.  Subclasses should override this
     33 // method if they add any decorations.
     34 - (NSRect)textCursorFrameForFrame:(NSRect)cellFrame;
     35 
     36 // Return the portion of the cell to use for text display.  This corresponds to
     37 // the frame with our added decorations sliced off.  The default implementation
     38 // returns the full |cellFrame|, as by default there are no decorations.
     39 // Subclasses should override this method if they add any decorations.
     40 - (NSRect)textFrameForFrame:(NSRect)cellFrame;
     41 
     42 // Baseline adjust for the text in this cell.  Defaults to 0.  Subclasses should
     43 // override as needed.
     44 - (CGFloat)baselineAdjust;
     45 
     46 // Radius of the corners of the field.  Defaults to square corners (0.0).
     47 - (CGFloat)cornerRadius;
     48 
     49 // Which corners of the field to round.  Defaults to RoundedAll.
     50 - (StyledTextFieldCellRoundedFlags)roundedFlags;
     51 
     52 // Returns YES if a light themed bezel should be drawn under the text field.
     53 // Default implementation returns NO.
     54 - (BOOL)shouldDrawBezel;
     55 
     56 @end
     57 
     58 #endif  // CHROME_BROWSER_UI_COCOA_STYLED_TEXT_FIELD_CELL_H_
     59